R语言数据可视化

R note book 文档--输出html格式文档,plotly不能生成PDF文件
---
title: "R语言数据可视化"
output: html_notebook
---
在R语言中进行数据可视化是数据分析和呈现的重要环节,R提供了多种强大的绘图系统和工具。以下是常见的数据可视化方法和示例,从基础到高级逐步介绍:

### **1. 基础绘图系统(Base R Graphics)**
R内置的基础绘图函数,适合快速生成简单图表。

#### **散点图**
```{r}
# 示例数据
x <- 1:10
y <- x^2

# 绘制散点图
plot(x, y, 
     main = "散点图示例",  # 标题
     xlab = "X轴", ylab = "Y轴",  # 坐标轴标签
     pch = 16,  # 点的形状
     col = "blue",  # 点的颜色
     cex = 1.5)  # 点的大小
```

#### **折线图**
```{r}
# 生成数据
time <- seq(1, 10, by = 0.5)
values <- sin(time)

# 绘制折线图
plot(time, values, type = "l",  # type="l"表示折线图
     main = "正弦曲线",
     xlab = "时间", ylab = "值",
     col = "red", lwd = 2)  # 线宽为2
```

#### **箱线图**
```{r}
# 使用内置数据集mtcars
data(mtcars)

# 按气缸数(cyl)分组绘制mpg的箱线图
boxplot(mpg ~ cyl, data = mtcars,
        main = "不同气缸数车辆的MPG分布",
        xlab = "气缸数", ylab = "每加仑英里数(MPG)",
        col = c("lightblue", "lightgreen", "lightpink"))
```


### **2. ggplot2包(推荐)**
基于图形语法的高级绘图系统,适合创建复杂、精美的图表。

#### **安装与加载**
```{r}
#install.packages("ggplot2")  # 首次使用需安装
library(ggplot2)
```

#### **散点图**
```{r}
# 使用内置数据集iris
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point(size = 3) +  # 散点图层
  labs(title = "鸢尾花萼片长度与宽度关系",
       x = "萼片长度(cm)", y = "萼片宽度(cm)") +
  theme_minimal()  # 使用简洁主题
```

#### **柱状图**
```{r}
# 统计不同Species的数量
ggplot(iris, aes(x = Species)) +
  geom_bar(fill = "skyblue", color = "black") +  # 柱状图层
  labs(title = "鸢尾花种类分布", x = "种类", y = "数量") +
  theme_classic()  # 使用经典主题
```

#### **箱线图与小提琴图**
```{r}
ggplot(iris, aes(x = Species, y = Petal.Length, fill = Species)) +
  geom_boxplot(alpha = 0.7) +  # 箱线图层
  geom_violin(alpha = 0.3) +   # 小提琴图层(显示密度分布)
  labs(title = "不同种类鸢尾花花瓣长度分布",
       x = "种类", y = "花瓣长度(cm)")
```


### **3. 高级可视化**

#### **热图(Heatmap)**
```{r}
# 使用内置数据集mtcars
cor_matrix <- cor(mtcars)  # 计算相关系数矩阵

# 绘制热图
heatmap(cor_matrix, 
        main = "汽车特征相关性热图",
        col = cm.colors(256),  # 颜色渐变
        scale = "column")  # 按列标准化
```

#### **直方图与密度图**
```{r}
# 使用ggplot2绘制直方图与密度图
ggplot(iris, aes(x = Sepal.Length)) +
  geom_histogram(aes(y = ..density..),  # 直方图(显示密度)
                 bins = 15, 
                 fill = "lightblue", 
                 color = "black") +
  geom_density(alpha = 0.2, fill = "blue") +  # 密度曲线
  facet_wrap(~ Species) +  # 按种类分面
  labs(title = "鸢尾花萼片长度分布", x = "萼片长度(cm)", y = "密度")
```

#### **气泡图(散点图+大小/颜色映射)**
```{r}
# 使用ggplot2绘制气泡图
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point(aes(size = Petal.Length, color = Species), 
             alpha = 0.7) +  # alpha设置透明度
  scale_size_continuous(range = c(2, 10)) +  # 控制点大小范围
  labs(title = "鸢尾花特征气泡图",
       x = "萼片长度(cm)", y = "萼片宽度(cm)",
       size = "花瓣长度", color = "种类") +
  theme_bw()  # 使用黑白主题
```


### **4. 交互式可视化(plotly)**
创建可交互的图表,适合网页展示或数据分析。

#### **安装与基本用法**
```{r}
#install.packages("plotly")
library(plotly)

# 将ggplot2图表转为交互式
p <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point(size = 3)

ggplotly(p)  # 转为交互式图表
```

#### **3D散点图**
```{r}
# 创建3D散点图
plot_ly(iris, x = ~Sepal.Length, y = ~Sepal.Width, z = ~Petal.Length,
        color = ~Species, type = "scatter3d", mode = "markers") %>%
  layout(title = "鸢尾花3D特征散点图")
```


### **5. 数据可视化注意事项**
1. **选择合适的图表类型**:根据数据类型和分析目的选择(如比较用柱状图,分布用箱线图,关系用散点图)。
2. **保持简洁**:避免过多装饰元素,确保数据是焦点。
3. **使用适当的颜色**:避免使用过于鲜艳或难以区分的颜色,考虑色盲用户。
4. **添加必要标签**:确保图表标题、坐标轴标签、图例清晰。
5. **优化布局**:合理安排图表大小、比例和间距。


### **6. 资源推荐**
- **ggplot2官方文档**:https://ggplot2.tidyverse.org/
- **R Graphics Cookbook**:https://r-graphics.org/
- **Plotly for R**:https://plotly.com/r/

通过以上方法,你可以在R中创建从简单到复杂的各种数据可视化图表,满足不同的分析和展示需求。