ggplot2的mpg数据集 - 如何理解geom_point图

时间:2017-10-28 16:57:45

标签: r ggplot2

为什么此图表不显示重叠

此数据集中的某些汽车共享x和y(displ和hwy)的相同组合。

  • 例如,对于displ = 2和hwy = 29,有:1中等; 6紧凑和3微型。

然而,在这个地方只有一个绿点只显示1中型。我对这张图有什么误解?

非常感谢你!

ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy, color = class))

enter image description here

3 个答案:

答案 0 :(得分:2)

的Carsten,

goem_point()的调用会将坐标映射到彼此,因此您只会看到一个点,对于小型数据集尤其如此。您可以使用geom_jitter()来解决此问题,它允许您在绘图中插入噪声,以便您查看所有点。

解决方案:geom_jitter()

这里我们使用geom_jitter()将噪声插入到绘图数据中,以便我们查看所有重叠点。

if (require(ggplot2) ) install.packages("ggplot2")
data(mtcars)
ggplot(data = mpg) + 
  geom_jitter(mapping = aes(x = displ, y = hwy, color = class))

绘图输出:(略微移动点以区分每个点)

注意插入"噪音"允许您区分绘图点。

enter image description here

NB。抖动geom是geom_point的便捷快捷方式(position =" jitter")。它为每个点的位置添加了少量的随机变化,是处理由较小数据集中的离散性引起的过度绘制的有用方法。

答案 1 :(得分:1)

除了抖动之外,您还可以将geom_point()中的alpha参数更改为0.3或0.4,默认情况下为1,这意味着100%不透明。

ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = class, alpha = 0.3))

这将突出显示过度绘图的区域

答案 2 :(得分:0)

geom_jitter解决方案和alpha更改解决方案都非常出色。第三种可能性是使用geom_count()将标记的大小映射到这些坐标处的观测数量(以及alpha调整):

library(ggplot2)
data(mtcars)
ggplot(data = mpg) + 
    geom_count(mapping = aes(x = displ, y = hwy, color = class), alpha = .5)