使用 alpha 使 geom_point 点的颜色稍微变浅?

Make geom_point points color slightly lighter with alpha?

我希望最后 7 个数据点的线和点稍微亮一些。我尝试使用 alpha,但无论我使用的增量有多小,点数都太轻了。我可以使用 alpha(如果可以,如何使用),还是我必须手动处理颜色?

我正在使用 tidyverse 1.3.0。

示例如下。

foo <- data.frame(x=seq(1:10))
foo$y <- foo$x
foo$alpha <- c(rep(1, 7), rep(0.5, 3))
ggplot(foo, aes(x, y)) + geom_point(aes(alpha=alpha))

alpha=0.5:

alpha=0.999,亮度相同(太亮):

如果要将 alpha 设置为特定值,则必须将其设置为 aes 之外的参数,例如geom_point(alpha = foo$alpha) 或使用 scale_alpha_identity。试试这个:

foo <- data.frame(x=seq(1:10))
foo$y <- foo$x
foo$alpha <- c(rep(1, 7), rep(0.5, 3))

library(ggplot2)

ggplot(foo, aes(x, y)) + 
  geom_point(aes(alpha=alpha)) +
  scale_alpha_identity()

foo$alpha <- c(rep(1, 7), rep(0.1, 3))

ggplot(foo, aes(x, y)) + 
  geom_point(aes(alpha=alpha)) +
  scale_alpha_identity()

关于使用您的 alpha 获得非常具体的值,请参阅

如果您不需要“透明度”,而只是想使颜色变亮一点,那么您可以使用 shadescolorspace 包。

两者各有优缺点。 shades 包最棒的地方在于你可以修改整个调色板,比如 brewer 调色板。

如果你只有一种颜色要修改,colorspace包会更容易一些。这里使用 colorspace 包:

library(ggplot2)
library(colorspace)

foo <- data.frame(x = seq(1:10))
foo$y <- foo$x
foo$lighter <- c(rep("black", 7), rep(lighten("black", 0.5), 3))

ggplot(foo, aes(x, y)) +
  geom_point(aes(color = lighter)) +
  scale_color_identity()