优雅R:散点图是真没人用了吗?

文摘   2024-09-18 09:00   爱尔兰  

随着数据科学领域的快速发展和工具的日益丰富,越来越多的研究者开始追求复杂的可视化技术,散点图这种简单直观的工具逐渐被各种多维度、花哨的图表所取代。许多人在论文中通过炫技式的可视化展示复杂数据,忽略了图表应有的清晰性和易读性。这种趋势虽然增强了视觉效果,但在数据传达和解释性上却打了折扣。

散点图简介

散点图(Scatter Plot)是数据可视化中最基础但也最有效的工具之一。它通过在二维坐标系中绘制数据点,展示两个连续变量之间的关系。横轴和纵轴分别表示两个变量的数值,每个点的位置对应这两个变量的取值。散点图的优势在于其直观性,能够快速揭示变量之间的相关性、趋势以及潜在的异常值。

散点图的应用场景

尽管复杂可视化越来越流行,散点图依然在许多场景中具有不可替代的作用,特别是在以下情况下:

  1. 变量相关性分析:散点图能够直观展示两个变量之间是否存在线性或非线性关系,适合用于回归分析的前期探索。

  2. 异常值检测:通过观察散点图中的离群点,研究者可以快速发现异常数据。

  3. 群体分类:通过不同的颜色或形状编码,散点图可以展示不同类别之间的分布情况,便于比较不同群体的特征。

  4. 数据分布可视化:除了变量关系,散点图还可以结合边缘直方图等工具,展示变量的分布特征。

基本散点图示例代码

下面是一段R语言代码,用于生成最常规的分组散点图,展示两个变量之间的关系并通过颜色区分不同的类别:

# 安装并加载 ggplot2 包
library(ggplot2)

# 生成简单的数据集
set.seed(123)
n <- 100
x <- rnorm(n, mean = 5, sd = 2) # 先生成 x
y <- 2 * x + rnorm(n) # 根据 x 生成 y

data <- data.frame(
x = x,
y = y,
group = sample(letters[1:3], n, replace = TRUE) # 分类变量
)

# 创建基础散点图,按 group 变量分组并用颜色区分
ggplot(data, aes(x = x, y = y, color = group)) +
geom_point() +
labs(title = "基础分组散点图", x = "自变量 X", y = "因变量 Y", color = "分组") +
theme_minimal()

# 保存为 PNG
ggsave("scatter_plot.png", width = 6, height = 4)

高级散点图示例代码

为了展示如何在散点图中添加更多信息,以下代码通过颜色、大小、透明度等属性进行多维度的可视化:

# 安装并加载所需的包
library(ggplot2)
library(ggExtra)

# 生成包含多个维度的模拟数据
set.seed(123)
n <- 1000
data <- data.frame(
x = rnorm(n, mean = 5, sd = 2),
y = 2 * data$x + rnorm(n),
group = sample(letters[1:4], n, replace = TRUE),
size_var = abs(rnorm(n, mean = 50, sd = 25)),
color_var = rnorm(n, mean = 100, sd = 10)
)

# 创建高级散点图,包含颜色、大小和透明度编码
base_plot <- ggplot(data, aes(x = x, y = y)) +
geom_point(aes(color = color_var, size = size_var, shape = group), alpha = 0.6) +
scale_color_gradient(low = "blue", high = "red") +
labs(title = "复杂散点图", x = "自变量 X", y = "因变量 Y", color = "颜色变量", size = "大小变量") +
theme_minimal() +
geom_smooth(method = "lm", se = FALSE, color = "black", linetype = "dashed")

# 添加边缘直方图
complex_plot <- ggMarginal(base_plot, type = "histogram", fill = "lightblue", color = "black")

# 打印图表
print(complex_plot)

结论

尽管如今很多研究者在论文中追求复杂的可视化技术,散点图仍然是数据分析中不可或缺的基础工具。它的简单直观性使得研究者能够快速发现变量间的关系和模式,同时在必要时也能通过组合多维信息来增加复杂性。在进行数据可视化时,保持图表的清晰性和易读性始终应该是首要考虑因素。

感谢关注,你的支持是我不懈的动力!

科研代码
专注R和Python的数据分析。
 最新文章