首页 文章

Alpha和传奇之间的奇怪互动

提问于
浏览
0

在绘制几条重叠的ecdf曲线时,我尝试调整曲线的alpha值以提高可见度 . 在修补alpha的正确位置时,我发现了以下内容 .

library(ggplot2)
library(dplyr)

x <- data.frame(Var = rep(1:3, 10000)) %>%
  mutate(Val = rnorm(10000)*Var,
         Var = factor(Var)) %>%
  arrange(Var, Val) %>%
  group_by(Var) %>%
  mutate(ecdf = ecdf(Val)(Val))

ggplot(x, aes(x=Val)) + 
  stat_ecdf(aes(color = Var), size = 1.25, alpha = .9)

这使得线条具有正确的alpha值,但使得图例无效 . (我这里只使用alpha = .9来证明图例颜色完全消失的点) . 我找到的工作是添加:

ggplot(x, aes(x=Val)) + 
  stat_ecdf(aes(color = Var), size = 1.35, alpha = .9) +
  guides(color = guide_legend(override.aes= list(alpha = 1)))

因此,虽然我有一个解决我的直接问题的解决方案,有人可以解释为什么第一次调用ggplot搞砸了吗?这是一个错误吗?如果它有任何区别,我相信在使用geom_line时也存在这个问题(尽管需要稍微不同的data.frame) .

奇怪的 . 这是我的sessionInfo() . 我还检查了是否有任何过时的包 .

sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932  LC_MONETARY=Japanese_Japan.932
[4] LC_NUMERIC=C                   LC_TIME=Japanese_Japan.932    

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RColorBrewer_1.1-2 ggplot2_1.0.1      stringr_1.0.0      tidyr_0.2.0        dplyr_0.4.2       
[6] data.table_1.9.4  

loaded via a namespace (and not attached):
[1] Rcpp_0.11.6      magrittr_1.5     MASS_7.3-40      munsell_0.4.2    colorspace_1.2-6
[6] R6_2.0.1         plyr_1.8.3       tools_3.2.1      parallel_3.2.1   grid_3.2.1      
[11] gtable_0.1.2     DBI_0.3.1        lazyeval_0.1.10  assertthat_0.1   digest_0.6.8    
[16] reshape2_1.4.1   labeling_0.3     stringi_0.5-4    scales_0.2.5     chron_2.3-47    
[21] proto_0.3-10

1 回答

  • 3

    他们有什么不同?我错过了什么?

    library(ggplot2)
    library(dplyr)
    library(gridExtra)
    
    x <- data.frame(Var = rep(1:3, 10000)) %>%
      mutate(Val = rnorm(10000)*Var,
             Var = factor(Var)) %>%
      arrange(Var, Val) %>%
      group_by(Var) %>%
      mutate(ecdf = ecdf(Val)(Val))
    
    ggplot(x, aes(x=Val)) + 
      stat_ecdf(aes(color = Var), size = 1.25, alpha = .9) -> gg1
    
    ggplot(x, aes(x=Val)) + 
      stat_ecdf(aes(color = Var), size = 1.35, alpha = .9) +
      guides(color = guide_legend(override.aes= list(alpha = 1))) -> gg2
    
    grid.arrange(gg1, gg2)
    

    enter image description here

相关问题