如何在条形图中的条形图中设置Alpha?

时间:2019-06-13 19:27:43

标签: r 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)

enter image description here

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

谢谢!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

由于某些原因,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

答案 2 :(得分:1)

将颜色指定为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")