geom_density与alpha矢量

时间:2016-07-04 18:51:21

标签: r ggplot2

我想用geom_density绘制几个发行版,并且除了其中一个发行版之外,所有发行版都已逐渐消失。如何执行此操作,因为以下内容未按预期更改alpha

require("ggplot2")

data = rbind(
  data.frame(generation=1, samples=rnorm(90)),
  data.frame(generation=2, samples=rnorm(100)),
  data.frame(generation=3, samples=rnorm(110)),
  data.frame(generation=4, samples=rnorm(120)),
  data.frame(generation=5, samples=rnorm(130)),
  data.frame(generation=6, samples=rnorm(140))
)

maxGen = max(data$generation)

ggplot(data) + 
  geom_density(
    aes(
      colour= factor(generation), 
      x=samples,
      alpha=ifelse(data$generation == maxGen, 0.3, 1.0)
    )
  )

如果它有所作为,真实的东西会在另一个变量上添加一个facet wrap。

3 个答案:

答案 0 :(得分:2)

如果您希望透明度参数生效,则需要指定"headers is not a function"参数而不是颜色,这只会影响绘图的线条:

fill

enter image description here

答案 1 :(得分:2)

切换到geom_line,似乎有效:

require("ggplot2")

data = rbind(
  data.frame(generation=1, samples=rnorm(100)),
  data.frame(generation=2, samples=rnorm(100)),
  data.frame(generation=3, samples=rnorm(100)),
  data.frame(generation=4, samples=rnorm(100)),
  data.frame(generation=5, samples=rnorm(100)),
  data.frame(generation=6, samples=rnorm(100))
)

maxGen = max(data$generation)

ggplot(data) + 
  geom_line(
    aes(
      colour= factor(generation), 
      x=samples,
      alpha=I(ifelse(data$generation == maxGen, 1, 0.3))
    ),
    stat="density",
    size=1.5
  )

我不知道II(ifelse(...正在做什么,但它似乎阻止了额外的东西出现在传奇中。

enter image description here

答案 2 :(得分:1)

另一个与geom_density一起使用的选项是直接在scales_color_manual中指定带有alpha参数的颜色,但在这种情况下,需要更多工作来“缩放”您的绘图以获得更多颜色

cols <- scales::hue_pal()(6)
cols.alpha <- c(cols[1:5], grDevices::adjustcolor(cols[6], alpha.f = 0.3))

ggplot(data) + 
  geom_density(
    aes(
      colour = factor(generation), 
      x = samples,
    ), size = 1.5
  ) +
  scale_colour_manual(values = cols.alpha)