科研星球

R语言统计与绘图:散点图散点重叠过多时,怎么办?

当数据集中观测对象过多时,我们绘制散点图时会发现大多数散点都重合在一起,这样会损失一部分数据信息,那么怎么办了?

有两种方法可以解决。

今天来学习散点图的另外几种表现形式。

1. 安装和加载R包

ggplot2已经安装的就不要在安装了,直接加载即可。

# install.packages("ggplot2")
library(ggplot2)

2. 加载演示数据集

使用ggplot2包的mpg数据集来绘制演示图形。

data(mpg) # 加载数据集
View(mpg) # 预览数据集

3. 绘制图形

我们先绘制个散点图看看情况。

p1 <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_point(color = "red") + 
  geom_smooth(method="lm", se=T) # 拟合线 添加置信区间
p1

下载 (1).jpeg

从上面我们可以看到,图上的x变量和y变量是存在相关关系的。

但是,因为数值重叠的原因,有一些散点被隐藏掉了,数据集原有234个观测对象,而图上的散点远远小于这个数值,这样绘制出来的图形就会损失部分信息。

那么怎么解决这个问题了,一种是使用jitter_geom()函数增加抖动值,使重合的散点在原始位置随机抖动。

我们可以使用jitter_geom()函数设置散点抖动,抖动的范围可以设置width参数来控制。

p2 <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_jitter(width = .5, size=1) +
  labs(title="ggplot2绘制抖动散点图",
       subtitle="R语言统计与绘图"
       y="hwy"
       x="cty"
p2

640.png

如上图所示,现在图上显示的散点更多。

另外一种就是绘制计数图

当数据重叠的越多时,散点就越大。

计数图使用geom_count()函数来绘制。

p3 <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_count() +
  labs(title="ggplot2绘制计数图",
       subtitle="R语言统计与绘图"
       y="hwy"
       x="cty"
p3

下载 (2).jpeg

如上图所示,计数图就简单绘制好了。

我们可以设置计数图的颜色,以及不显示旁边的图例。

p4 <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_count(col="tomato3", show.legend=F ) +
  labs(title="ggplot2绘制计数图",
       subtitle="R语言统计与绘图"
       y="hwy"
       x="cty"
p4

下载 (3).jpeg

还可以设置黑白主题。

p5 <- p4 + theme_bw()
p5

下载 (4).jpeg

参考资料

  1. http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html


没有账号?