3

对于最后 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,太轻了

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

alpha=0.999,太轻了

4

2 回答 2

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()

于 2020-08-09T10:56:52.990 回答
2

关于使用您的 alpha 获取非常具体的值,请参阅此相关线程

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

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

如果您只有一种颜色要修改,那么颜色空间包会更容易一些。这里使用 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()

于 2020-08-09T14:18:35.027 回答