1

我有一个 9 列的矩阵,我想使用ggplot2. 我想为三列组设置不同的颜色,基本上是增加“灰度”的顺序。我怎样才能做到这一点?

我尝试在选项“fill=”上输入颜色列表,但它不起作用。请参阅下面的示例。目前,它表示“gray80”,但我希望能够为每个小提琴图指定颜色,以便能够为 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
4

1 回答 1

3

我们可以添加一个新列,调用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)

在此处输入图像描述

ifelse您可以使用该语句控制分组。scale_fill_manual可用于指定用于填充小提琴的不同颜色。

于 2018-06-01T14:25:32.563 回答