【发布时间】:2018-11-11 19:32:10
【问题描述】:
我正在创建一些小提琴图并想为它们着色。它适用于维数为 9 的矩阵,如我之前的问题
ggplot violin plot, specify different colours by group?
但是当我将维度增加到 15 时,颜色的顺序不受尊重。为什么会这样?
在这里有效(9 列):
library(ggplot2)
dat <- matrix(rnorm(250*9),ncol=9)
# Violin plots for columns
mat <- reshape2::melt(data.frame(dat), id.vars = NULL)
mat$variable_grouping <- as.character(sort(rep(1:9,250)))
pp <- ggplot(mat, aes(x = variable, y = value, fill = variable_grouping)) +
geom_violin(scale="width",adjust = 1,width = 0.5) + scale_fill_manual(values=rep(c("red","green","blue"),3))
pp
这里不行(15列):
library(ggplot2)
dat <- matrix(rnorm(250*15),ncol=15)
# Violin plots for columns
mat <- reshape2::melt(data.frame(dat), id.vars = NULL)
mat$variable_grouping <- as.character(sort(rep(1:15,250)))
pp <- ggplot(mat, aes(x = variable, y = value, fill = variable_grouping)) +
geom_violin(scale="width",adjust = 1,width = 0.5) + scale_fill_manual(values=rep(c("red","green","blue"),5))
pp
【问题讨论】:
-
您的
variable_grouping变量被 ggplot 转换为因子,因此使用默认级别顺序(其中1位于2之前)。如果您想控制因子水平的顺序,您需要自己“手动”设置水平。我为此使用forcats::fct_inorder(),因为它很方便,比如fill = forcats::fct_inorder(variable_grouping)。 -
@aosmith 这行得通。如果您将其发布为答案,我将接受它。
标签: r ggplot2 violin-plot