【问题标题】:how to set the alpha in a barchart in lattice?如何在点阵的条形图中设置 alpha?
【发布时间】:2019-06-13 19:27:43
【问题描述】:

考虑这个简单的例子:

tibble(time = c(1,2,3,4,5),
       var1 = c(2,2,2,2,1),
       var2 = c(2,1,1,4,5)) %>% 
  barchart(var1 + var2 ~ time, 
           data = ., 
           stack = TRUE,
           horiz = FALSE,
           par.settings = simpleTheme(col = c('red', 'blue'),
                                      fill = c('red', 'blue'),
                                      alpha = c(0.2)),
           auto.key = TRUE)

尽管我尝试过,但我无法为条形设置alpha。他们太亮了!有办法吗?

谢谢!

【问题讨论】:

    标签: r lattice


    【解决方案1】:

    只需使用rgb() 作为您的颜色,第四个参数是alpha:

    library(tidyverse)
    library(lattice)
    tibble(
         time = c(1,2,3,4,5),
         var1 = c(2,2,2,2,1),
         var2 = c(2,1,1,4,5)) %>% 
      barchart(var1 + var2 ~ time, data = ., 
        stack = TRUE, horiz = FALSE,
        par.settings = 
          simpleTheme(
            col = c(
              rgb(1,0,0,0.2), 
              rgb(0,0,1,0.2)),
            fill = c(
              rgb(1,0,0,0.2), 
              rgb(0,0,1,0.2))),
        auto.key = TRUE) 
    

    【讨论】:

    • 小贴士:我经常需要制作很多图,所以倾向于制作像theme_col1 <- rgb(0.2, 0.4, 0.8, 0.4) 这样的参数,然后将其称为col = theme_col1,这样我就可以通过只编辑一个参数来调整所有图在脚本的开头。
    【解决方案2】:

    panel.barchart 函数由于某种原因完全忽略了alpha= 参数。 @rg255 更改颜色的建议无疑是解决此问题的最简单方法。您还可以重新编写面板函数以实际使用alpha= 选项。这是一个非常混乱的功能,但我把重写放在了这个要点中:https://gist.github.com/MrFlick/d705d63075dd1d0c804be8e5543b9e72。如果您加载该功能,那么您可以添加

    panel="panel.barchart.alpha"
    

    致电barchart()。不幸的是,这稍微弄乱了自动键(它绘制点而不是矩形。但是您可以通过执行类似的操作将其恢复为默认值

    pp <- barchart(..., panel="panel.barchart.alpha")
    pp$legend$top$args$points <- FALSE
    pp$legend$top$args$rectangles <- TRUE
    

    【讨论】:

      【解决方案3】:

      当为 R 指定颜色时,可以使用十六进制格式。在这种格式中,您可以在末尾添加两个与您需要的半透明程度相关的数字。我并不是说这是最好的方法,但这是我在核心 R 图中实现半透明的方式。

      例如

      # Black points
      plot(rnorm(10), rnorm(10), pch = 20, col = "#000000")
      
      # Black points with 50% translucency
      plot(rnorm(10), rnorm(10), pch = 20, col = "#00000050")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2018-05-28
        • 1970-01-01
        • 2018-05-31
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多