Как установить альфа в диаграмме в решетке? - PullRequest
1 голос
/ 13 июня 2019

Рассмотрим этот простой пример:

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 ]

4 голосов
/ 13 июня 2019

Просто используйте rgb() для своих цветов, четвертый аргумент - альфа:

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 голос
/ 14 июня 2019

При указании цветов для 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")
1 голос
/ 13 июня 2019

Функция 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
...