使用alpha使geom_point点颜色变浅吗?

时间:2020-08-08 18:31:51

标签: r ggplot2 alpha geom-point

我希望我的线条和点在最后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.5, too light

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

alpha=0.999, too light

2 个答案:

答案 0 :(得分:3)

如果要将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()

答案 1 :(得分:2)

关于使用alpha获取非常具体的值,请参见this related thread

如果您不需要“透明度”,而只是想稍微变亮一些颜色,则可以使用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()