如何获得与箱线图和小提琴图(ggplot / 使用 geom_split_violin)的处理相关的不同颜色,这些颜色被绘制成一个?
How to get different colors related to treatment for boxplot and violin plot (ggplot / using geom_split_violin) that are plotted in one?
我正在尝试将箱线图和小提琴图合二为一。
我可以根据处理方式填充箱线图和小提琴图的颜色。但是,我不希望它们的颜色完全相同,我希望小提琴图或箱线图的填充颜色更浅。
此外,如果我将 col=TM
添加到 geom_boxplot
的 aes
,我可以获得不同颜色的箱线图的外线。但是,然后我不能选择这些颜色或不知道如何选择(它们现在自动为粉红色和蓝色)。
背景:
我正在处理一个看起来像这样的数据集:
TM yax X Zscore
Org zscore zhfa -1.72
Org zscore zfwa -0.12
我正在根据每个处理 (TM
).X
(zhfa e.d.) 绘制 z-scores。
#Colours
ocean = c('#BBDED6' , '#61C0BF' , '#FAE3D9' , '#FFB6B9' )
## Plot ##
z <- ggplot(data = data, aes(x = X, y = Zscore,fill=TM)) +
geom_split_violin(col="white", fill="white") +
geom_boxplot(alpha = 1, width=0.3, aes(fill=TM), position = position_dodge(width = 0.3))
z + theme(axis.text = element_text(size = 12),legend.position="top") +
stat_compare_means(method="t.test", label.y=2.8, label.x=0.3, size=3) +
scale_fill_manual(values=ocean, labels=c("Mineral fertilizer", "Organic fertilizer"))
现在,一半的小提琴图被填充为白色,但不是两个都填充了白色(这样就更好了)。如果我绘制 geom_split_violin()
它会得到与箱线图完全相同的颜色。
此外,zhfa的小提琴图应该在左侧,但它被切换并显示在右侧,同时它与有机(左侧)箱线图的数据匹配。
现在的图表:
我不知道是否可以通过添加与 scale_fill_manual 相关的内容来解决,或者这是一个不可能的请求
示例数据:
data <- data.frame(TM = c(rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5)),
Zscore = runif(30,-2,2),
X = c(rep("zwfa", 10), rep("zhfa", 10), rep("zbfa", 10)))
您可以向数据中添加一个与 TM
结构相同但值不同的附加列,然后缩放填充:
示例数据:
data <- data.frame(TM = c(rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5)),
Zscore = runif(30,-2,2),
X = c(rep("zwfa", 10), rep("zhfa", 10), rep("zbfa", 10)))
开始求解:
data <- data %>% mutate(TMm = c(rep("orgM", 5), rep("minM", 5),rep("orgM", 5), rep("minM", 5),rep("orgM", 5), rep("minM", 5)))
#Colours
ocean = c('#BBDED6' , '#FAE3D9', '#61C0BF' , '#FFFFFF')
## Plot ##
z <- ggplot(data = data, aes(x = X, y = Zscore,fill=TM)) +
geom_split_violin(mapping = aes(fill=TMm)) +
geom_boxplot(alpha = 1, width=0.3, aes(fill=TM), position = position_dodge(width = 0.3))
z + theme(axis.text = element_text(size = 12),legend.position="top") +
stat_compare_means(method="t.test", label.y=2.8, label.x=0.3, size=3) +
scale_fill_manual(breaks = c("org", "min"), values=ocean, labels=c("Mineral fertilizer", "Organic fertilizer"))
在您的数据中,您可能必须将 breaks = c("org", "min")
更改为您在 TM
变量
中称为因子水平的任何值
或者如果你想要整个小提琴情节是白色的:
ocean = c('#BBDED6' , '#FFFFFF', '#61C0BF' , '#FFFFFF')
新情节:
我正在尝试将箱线图和小提琴图合二为一。
我可以根据处理方式填充箱线图和小提琴图的颜色。但是,我不希望它们的颜色完全相同,我希望小提琴图或箱线图的填充颜色更浅。
此外,如果我将 col=TM
添加到 geom_boxplot
的 aes
,我可以获得不同颜色的箱线图的外线。但是,然后我不能选择这些颜色或不知道如何选择(它们现在自动为粉红色和蓝色)。
背景:
我正在处理一个看起来像这样的数据集:
TM yax X Zscore
Org zscore zhfa -1.72
Org zscore zfwa -0.12
我正在根据每个处理 (TM
).X
(zhfa e.d.) 绘制 z-scores。
#Colours
ocean = c('#BBDED6' , '#61C0BF' , '#FAE3D9' , '#FFB6B9' )
## Plot ##
z <- ggplot(data = data, aes(x = X, y = Zscore,fill=TM)) +
geom_split_violin(col="white", fill="white") +
geom_boxplot(alpha = 1, width=0.3, aes(fill=TM), position = position_dodge(width = 0.3))
z + theme(axis.text = element_text(size = 12),legend.position="top") +
stat_compare_means(method="t.test", label.y=2.8, label.x=0.3, size=3) +
scale_fill_manual(values=ocean, labels=c("Mineral fertilizer", "Organic fertilizer"))
现在,一半的小提琴图被填充为白色,但不是两个都填充了白色(这样就更好了)。如果我绘制 geom_split_violin()
它会得到与箱线图完全相同的颜色。
此外,zhfa的小提琴图应该在左侧,但它被切换并显示在右侧,同时它与有机(左侧)箱线图的数据匹配。
现在的图表:
我不知道是否可以通过添加与 scale_fill_manual 相关的内容来解决,或者这是一个不可能的请求
示例数据:
data <- data.frame(TM = c(rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5)),
Zscore = runif(30,-2,2),
X = c(rep("zwfa", 10), rep("zhfa", 10), rep("zbfa", 10)))
您可以向数据中添加一个与 TM
结构相同但值不同的附加列,然后缩放填充:
示例数据:
data <- data.frame(TM = c(rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5),rep("org", 5), rep("min", 5)),
Zscore = runif(30,-2,2),
X = c(rep("zwfa", 10), rep("zhfa", 10), rep("zbfa", 10)))
开始求解:
data <- data %>% mutate(TMm = c(rep("orgM", 5), rep("minM", 5),rep("orgM", 5), rep("minM", 5),rep("orgM", 5), rep("minM", 5)))
#Colours
ocean = c('#BBDED6' , '#FAE3D9', '#61C0BF' , '#FFFFFF')
## Plot ##
z <- ggplot(data = data, aes(x = X, y = Zscore,fill=TM)) +
geom_split_violin(mapping = aes(fill=TMm)) +
geom_boxplot(alpha = 1, width=0.3, aes(fill=TM), position = position_dodge(width = 0.3))
z + theme(axis.text = element_text(size = 12),legend.position="top") +
stat_compare_means(method="t.test", label.y=2.8, label.x=0.3, size=3) +
scale_fill_manual(breaks = c("org", "min"), values=ocean, labels=c("Mineral fertilizer", "Organic fertilizer"))
在您的数据中,您可能必须将 breaks = c("org", "min")
更改为您在 TM
变量
或者如果你想要整个小提琴情节是白色的:
ocean = c('#BBDED6' , '#FFFFFF', '#61C0BF' , '#FFFFFF')
新情节: