Цвета тени (изменение «яркости») на основе дискретных значений - PullRequest
2 голосов
/ 15 января 2020

Было бы неплохо использовать цветную заливку, чтобы указать, например, уровни дискретного значения.

Поэтому вместо этого:

ggplot( mpg ) + 
    geom_boxplot( 
        aes(x=manufacturer,y=hwy,fill=interaction(str_match(trans,"auto|manual")[,1],manufacturer)) 
    )

Я бы хотел указать c Цвет для производителя, а затем немного темнее для «ручной» или «авто». За исключением того, что я не хочу указывать каждый отдельный цвет и его более темный оттенок для уровней моих значений, я рад go с текущей цветовой палитрой.

Есть несколько относительно простых для настройки яркости Я заинтересован в том, чтобы добавить это в ggplot на данный момент.

Есть ли, например, доступные крючки, к которым я мог бы подключиться, чтобы использовать что-то вроде тень эстетика?

Ответы [ 4 ]

2 голосов
/ 15 января 2020

Вот один из способов сделать это (без редактирования фрейма данных), используя alpha для получения вашей «яркости»:

library(stringr)
library(ggplot2)


ggplot( mpg ) + 
  geom_boxplot(aes(x=manufacturer,y=hwy,fill=interaction(str_match(trans,"auto|manual")[,1],manufacturer), col = manufacturer,
                   alpha = ifelse(grepl("auto", trans), .5, .8))) + 
  theme(legend.position = "none") 

enter image description here

Цвета могут быть изменены с помощью чего-то вроде "+ scale_col_manual ()".

1 голос
/ 17 января 2020

Несмотря на то, что изменение альфы - это здорово, это не точно меняет «яркость», но прозрачность графиков.

Здесь возможен обходной путь, также с использованием альфы, но для перекрывающего графика черного ящика с одни и те же группы.

Я добавил цвет эстетики c к первому сюжету, чтобы разделить группы на trans.

Затем вы можете поиграть, чтобы получить правильные «значения яркости», изменив альфа в scale_alpha_manual

library(tidyverse)
ggplot(mpg) +
# the ugly interaction call is to avoid weirdly coloured outlier dots. 
  geom_boxplot(aes(x = manufacturer, y = hwy, fill = manufacturer, 
                   group = interaction(manufacturer,(str_match(trans,"auto|manual"))))) +
  geom_boxplot(aes(x = manufacturer, y = hwy, alpha = str_match(trans,"auto|manual")), fill = 'black') +
  scale_alpha_manual(values = c(0.1,0.4))

Создано в 2020-01-16 по представит пакет (v0.3.0)

0 голосов
/ 15 января 2020

Используя alpha из aes, вы можете просто применить функцию, которую вы уже использовали в исходном сообщении, для управления прозрачностью полос, при этом присваивая manufacturer для fill для управления цветом полос.

library(stringr)
library(ggplot2)

ggplot(mpg,
       aes(x = manufacturer,
           y = hwy,
           fill = manufacturer,
           alpha = str_match(trans, "auto|manual")[,1])) +
geom_boxplot()
0 голосов
/ 15 января 2020

Вы можете проверить alpha на функции aes.

https://ggplot2.tidyverse.org/reference/scale_alpha.html

mpg_data <- mpg %>%
mutate(trans = gsub('\\(.*$', '', trans))

ggplot( mpg_data ) + 
geom_boxplot( 
aes(x=manufacturer,y=hwy,fill=manufacturer, alpha = trans))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...