如何在格子中的条形图中设置 alpha?

how to set the alpha in a barchart in 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('red', 'blue'),
                                      fill = c('red', 'blue'),
                                      alpha = c(0.2)),
           auto.key = TRUE)

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

谢谢!

只需使用 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) 

panel.barchart 函数出于某种原因完全忽略了 alpha= 参数。 @rg255 关于更改颜色的建议无疑是解决此问题的最简单方法。您还可以 re-rewrite 面板函数实际使用 alpha= 选项。这是一个相当混乱的函数,但我把 re-write 放在这个要点中: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

给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")