考虑以下简单示例:
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
。它们太亮了!有办法吗?
谢谢!
答案 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")