R 绘图 – 散点图基础
散点图是数据可视化中最常用的工具之一,用于展示两个连续变量之间的关系。R 语言提供了多种绘制散点图的方法,最常用的是 plot() 函数和 ggplot2 包。
使用 plot() 函数绘制散点图:
# 生成示例数据
x <- rnorm(50, mean = 0, sd = 1)
y <- rnorm(50, mean = 0, sd = 1)
# 绘制基础散点图
plot(x, y,
main = "基础散点图示例",
xlab = "X 变量",
ylab = "Y 变量",
col = "blue",
pch = 16)
使用 ggplot2 绘制散点图
ggplot2 是 R 中最流行的绘图包之一,提供更灵活和美观的绘图选项。
基础 ggplot2 散点图:
library(ggplot2)
# 创建数据框
df <- data.frame(x = x, y = y)
# 绘制散点图
ggplot(df, aes(x = x, y = y)) +
geom_point(color = "red", size = 3) +
ggtitle("ggplot2 散点图示例") +
xlab("X 值") +
ylab("Y 值") +
theme_minimal()
散点图的高级定制
可以通过多种方式增强散点图的信息量,包括添加回归线、分组着色和调整点的大小。
添加回归线:
ggplot(df, aes(x = x, y = y)) +
geom_point() +
geom_smooth(method = "lm", color = "blue") +
ggtitle("带线性回归线的散点图")
分组着色和形状:
# 添加分组变量
df$group <- factor(sample(1:2, 50, replace = TRUE))
ggplot(df, aes(x = x, y = y, color = group, shape = group)) +
geom_point(size = 3) +
scale_color_manual(values = c("red", "blue")) +
ggtitle("分组散点图示例")
气泡图:大小映射变量
散点图可以通过点的大小表示第三个变量的值,这种图表称为气泡图。
# 添加大小变量
df$size <- runif(50, 1, 5)
ggplot(df, aes(x = x, y = y, size = size)) +
geom_point(alpha = 0.6) +
scale_size(range = c(1, 10)) +
ggtitle("气泡图示例")
散点图矩阵
当需要同时观察多个变量间的关系时,可以使用散点图矩阵。
使用 pairs() 函数:
pairs(iris[,1:4],
main = "鸢尾花数据集散点图矩阵",
pch = 21,
bg = c("red", "green", "blue")[unclass(iris$Species)])
使用 GGally 包的 ggpairs():
library(GGally)
ggpairs(iris, columns = 1:4,
mapping = aes(color = Species),
title = "鸢尾花数据集散点图矩阵")
交互式散点图
使用 plotly 包可以创建交互式散点图,允许用户悬停查看数据点详细信息。
library(plotly)
p <- ggplot(df, aes(x = x, y = y, text = paste("X:", x, "<br>Y:", y))) +
geom_point(color = "purple")
ggplotly(p, tooltip = "text") %>%
layout(title = "交互式散点图示例")
性能优化:大数据集散点图
处理大型数据集时,传统散点图可能性能不佳。可以考虑以下方法:
使用 hexbin 包绘制六边形分箱图:
library(hexbin)
# 生成大数据
big_data <- data.frame(x = rnorm(10000), y = rnorm(10000))
hexbinplot(y ~ x, data = big_data,
main = "大数据集六边形分箱图",
colramp = function(n) heat.colors(n))
使用 ggplot2 的 geom_bin2d():
ggplot(big_data, aes(x = x, y = y)) +
geom_bin2d(bins = 50) +
scale_fill_gradient(low = "blue", high = "red") +
ggtitle("二维分箱图")
散点图的美化技巧
通过调整各种参数可以使散点图更加美观和专业。
添加透明度避免重叠:
ggplot(df, aes(x = x, y = y)) +
geom_point(alpha = 0.5, color = "darkgreen") +
ggtitle("带透明度的散点图")
自定义主题和坐标轴:
ggplot(df, aes(x = x, y = y)) +
geom_point(color = "orange") +
theme_bw() +
theme(plot.title = element_text(size = 14, face = "bold"),
axis.title = element_text(size = 12)) +
labs(title = "自定义主题的散点图",
x = "自定义X轴标签",
y = "自定义Y轴标签")
这些代码示例涵盖了从基础到高级的散点图绘制技术,可以根据具体需求选择合适的绘图方法。
