English · PDF 56
hwy 和 displ 的数值经过四舍五入,因此点会落在一个网格上,导致许多点相互重叠。这个问题被称为过度绘制(overplotting)。这种排列方式使得我们很难看出数据的密集区域在哪里。数据点是均匀分布在整个图中的,还是存在某个特殊的 hwy 和 displ 组合恰好包含 109 个值?
你可以通过将位置调整参数设置为 "jitter" 来避免这种网格化。position = "jitter" 会为每个点添加少量随机噪声。由于不太可能有两个点接收到完全相同的随机噪声,这样就能把点分散开来:
ggplot(data = mpg) + geom_point( mapping = aes(x = displ, y = hwy), position = "jitter" )

添加随机性似乎是一种奇怪的改进图形的方法,虽然它会使你的图形在小尺度上不那么精确,但会让图形在大尺度上更具揭示性。由于这是一个非常有用的操作,ggplot2 为 geom_point(posi tion = "jitter") 提供了一个简写形式:geom_jitter()。
要了解更多关于位置调整的信息,可以查阅每种调整方式对应的帮助页面:?position_dodge、?posi tion_fill、?position_identity、?position_jitter 和 ?posi tion_stack。