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 值应用于某些数据点的主要内容,如果未能解决你的问题,请参考以下文章

R ggplot透明度-以其他变量为条件的alpha值

我在闪亮的应用程序中的ggplot将不会显示数据表中的值,只显示一个点

ggplot 密度图 alpha 未在图例中呈现

ggplot2 不会将图例添加到具有多个层的箱线图

ggplot2多边形->错误:提供给连续比例的离散值

ggplot geom_linerange 中的 Alpha 由 Mac 上的观察次数确定