Jel*_*llz 5 plot stack r bar-chart ggplot2
我正在ggplot2中绘制堆栈条形图。我的数据集就像
var1 var2 var3 value
treatment1 group_1 C8.0 0.010056478
treatment2 group_1 C8.0 0.009382918
treatment3 group_2 C8.0 0.003014983
treatment4 group_2 C8.0 0.005349631
treatment5 group_2 C8.0 0.005349631
Run Code Online (Sandbox Code Playgroud)
var1包含5个处理,这五个处理属于中的两个组var2,每个处理中有14个测量var3值,其值存储在中value。
我想作图比较这五种治疗方法及其测量值。所以我用堆栈条形图绘制如下图:
我的代码:
library(ggplot2)
colourCount = length(unique(mydata$var3))
getPalette = colorRampPalette(brewer.pal(14, "YlGnBu")) #get more color from palette
ggplot(data=mydata, aes(x=var1, y=value, fill=var3))+
geom_bar(stat="identity", position="stack", colour="black", width=.2)+
*#geom_errorbar(aes(ymax=var3+se, ymin=var3-se, width=.1))+*
scale_fill_manual(values = getPalette(colourCount))+
scale_y_continuous(expand = c(0, 0))+
mytheme
Run Code Online (Sandbox Code Playgroud)
我如何将前两列堆叠在一起,而其他三列合并在一起?因为它们属于中的两个组var2。
上面的“重复问题”注释将使您得到这样的答案:
library(dplyr)
library(ggplot2)
dummydf <- expand.grid(var1 = paste0("trt", 1:5),
var3 = paste0("C_", 11:15)) %>%
mutate(value = runif(length(var1)),
var2 = ifelse(var1 %in% c("trt1", "trt2"), "grp1", "grp2"))
ggplot(dummydf, aes(var1, value, fill = var3)) +
geom_col(position = "stack") +
facet_grid(~var2, scales = "free_x", space = "free_x")
Run Code Online (Sandbox Code Playgroud)
这个解决方案有时很棒!优点是:
例如:
ggplot(dummydf, aes(var1, value, fill = var3)) +
geom_col(position = "stack") +
facet_grid(~var2, scales = "free_x", space = "free_x") +
theme(panel.spacing = unit(3, "cm"),
strip.text = element_text(size = 12, family = "mono"))
Run Code Online (Sandbox Code Playgroud)
此方法的主要缺点:
因此,这是另一种方法:
dummydf %>%
bind_rows(data_frame(var1 = "trt99")) %>%
ggplot(aes(var1, value, fill = var3)) +
geom_col(position = "stack") +
scale_x_discrete(limits = c("trt1", "trt2", "trt99", "trt3", "trt4", "trt5"),
breaks = c("trt1", "trt2", NA, "trt3", "trt4", "trt5"),
labels = c("trt1", "trt2", "", "trt3", "trt4", "trt5"))
Run Code Online (Sandbox Code Playgroud)
该解决方案有其自身的缺点,主要是您只能以有限的方式自定义空间。您可以通过在限制,中断和标签上添加其他错误级别,来创建等于已获得宽度宽度整数倍的“错误”栏。但是您不能创建只有半个栏宽的空间。
不过,您可以在假条空间中提供其他信息:
NA和""中breaks和labels与trt99和"<-group1 | group2->"或类似的东西。