ggplot 不会将 alpha 值应用于某些数据点
Posted
技术标签:
【中文标题】ggplot 不会将 alpha 值应用于某些数据点【英文标题】:ggplot won't apply alpha value to some data points 【发布时间】:2022-01-14 12:30:30 【问题描述】:ggplot 的绝对初学者。我正在绘制iris
数据集,当我设置alpha=0.5
时,它不适用于某些数据点。
代码如下:
ggplot(iris)+
geom_point(aes(Sepal.Length,Sepal.Width,colour=Species),size=5,alpha=0.5)+
labs(x="Sepal Length",y="Sepal Width")+
theme_minimal()
这是我得到的输出。可以看出,alpha 值在整个数据点上并不一致。
【问题讨论】:
这不是正确的解释。这些点更暗正是因为alpha
以及某些点在数据中重复(因此在这些位置有多个半透明点)。参见table(with(iris, table(Sepal.Width, Sepal.Length)))
,表明 90 次宽度/长度对是唯一的,22 次有两个这样的对,4 次有 3 行具有相同的对,1 次有 4 个这样的行。
稍微详细一点的是with(iris, table(Sepal.Width, Sepal.Length))
显示对(列/行组合)以及每个出现的次数(表中的值)。
是的,没错。
@MoonChild 这就是透明度。如果您想要均匀的浅色,则保持完全不透明度并选择较浅的颜色。透明的好处是你可以看到下面的一些东西。
我不会认为这是使用 geom_point
的负面影响。在很多情况下,您希望 is 使用不透明度来显示多个观察值具有相同的坐标。这是一个故意的问题,你正在策划什么,如何以及为什么。就像如果您不想看到基于不透明度的重叠点,请不要将 alpha 设置为低于 1。
【参考方案1】:
正在应用 alpha 值,但您看到的是由于某些点与其他点完全重叠。如果您选择 geom_jitter 而不是 geom_point,您可以看到这一点:
ggplot(iris)+
geom_jitter(aes(Sepal.Length,Sepal.Width,colour=Species),size=5,alpha=0.5)+
labs(x="Sepal Length",y="Sepal Width")+
theme_minimal()
当您将 alpha 设置为 0.5 时,这意味着如果有 2 个重叠点,那么您将获得全彩 (2 * 0.5 = 1)。如果您希望点即使有重叠也保持透明,那么您可以简单地选择较低的 alpha 值。重叠会变暗这一事实是一个很好的特性,因为这意味着您可以看到可能存在大点簇的位置。
【讨论】:
以上是关于ggplot 不会将 alpha 值应用于某些数据点的主要内容,如果未能解决你的问题,请参考以下文章