сюжет скрипки ggplot, указать разные цвета по группе? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть матрица из 9 столбцов, и я хочу создать скрипичный сюжет, используя ggplot2.Я хотел бы иметь разные цвета для групп из трех столбцов, в основном увеличивая порядок «серости».Как я могу это сделать?

Я пытался вписать списки цветов в опцию "fill =", но она не работает.Смотрите мой пример ниже.На данный момент он указывает «grey80», но я хочу иметь возможность указать цвет для каждого сюжета скрипки, чтобы можно было указать цвет для групп 3.

library(ggplot2)
dat <- matrix(rnorm(100*9),ncol=9)

# Violin plots for columns
mat <- reshape2::melt(data.frame(dat), id.vars = NULL)
pp <- ggplot(mat, aes(x = variable, y = value)) + geom_violin(scale="width",adjust = 1,width = 0.5,fill = "gray80")
pp

1 Ответ

0 голосов
/ 01 июня 2018

Мы можем добавить новый столбец с именем variable_grouping к вашим данным, а затем указать fill в aes:

mat <- reshape2::melt(data.frame(dat), id.vars = NULL)

mat$variable_grouping <- ifelse(mat$variable %in% c('X1', 'X2', 'X3'), 'g1',
                                   ifelse(mat$variable %in% c('X4','X5','X6'), 
                                         'g2', 'g3'))

ggplot(mat, aes(x = variable, y = value, fill = variable_grouping)) + 
    geom_violin(scale="width",adjust = 1,width = 0.5)

enter image description here

Вы можете управлять группировками, используя оператор ifelse.scale_fill_manual может использоваться для указания различных цветов, используемых для заполнения скрипок.

...