【问题标题】:ggplot violin plot, specify different colours by group?ggplot小提琴图,按组指定不同的颜色?
【发布时间】:2018-06-01 14:19:55
【问题描述】:

我有一个 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

【问题讨论】:

    标签: r ggplot2 violin-plot


    【解决方案1】:

    我们可以在您的数据中添加一个名为variable_grouping 的新列,然后在aes 中指定fill

    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 可用于指定用于填充小提琴的不同颜色。

    【讨论】:

    • 击败我,但只是补充一点,如果你想让它变成灰色,然后在绘图调用中添加以下内容: scale_fill_manual(values=c("#333333", "#777777", " #DDDDDD"))
    • scale_fill_manual(values=c("red", "green", "blue")) 但也会更改 ifelse 语句中的分组
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2021-10-22
    • 2018-10-24
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多