[英]R: Stacked bar graph with two orders of grouping and three columns of data
我和我的同事正在尝试创建一个堆叠的条形图,该条形图首先按RIL
(在x轴上)分组,然后按Trt
分组,其中Trt
(处理)聚在一起并按颜色区分。 我们还希望通过处理Trt
标记每个聚类中的每个条形图。
堆叠的条形图表示SW_Before
和SW_After
的计算平均值(注意,样本数据中有一个RIL
,编号206,具有多于一行的数据)。
我本来以为将数据SW_Before
和SW_After
的两列组合在一起,但是Trt
的控件处理不包含SW_Before
和SW_After
数据,但是必须包含在图中。 因此, RIL
为每个控制群集绘制了SW_Total
的第三列数据
我对R和数据组织领域比较陌生,所以请原谅我的业余能力。
以下是我的数据的可复制示例:
data1 <- read.table (text= "Plant RIL Trt SW_Before SW_After SW_Total
1 85 206 Early 0.380 2.27 2.65
2 88 166 Early 0 0.311 0.311
3 92 Lindo Early 0 0.663 0.633
4 94 158 Early 0.0738 0.596 0.669
5 95 23 Early 0.0252 0.543 0.795
6 97 Lica Early 0 0.646 0.646
7 104 166 Peak 0.227 0.261 0.488
8 108 Lica Peak 0.0705 0.816 0.887
9 113 Lindo Late 0.628 0 0.628
10 115 206 Late 0.544 1.05 1.60
11 115 206 Control NA NA 1.50", sep="", header=T)
我意识到,创建这张图比想象的要困难得多,因此,任何帮助/指导都将倍受赞赏。
编辑:
我现在尝试通过RIL
和Trt
绘制平均variable
(包括SW_Total
, SW_Before
和SW_After
)的SW_After
。 这是我的代码:
melted1 <- melt(data.baSW, id=c("Plant", "RIL", "Trt"))
melted1 <- subset(melted1, RIL %in% c("158", "166", "206", "23", "Licalla", "Lindo"))
melted1 %>%
group_by(Trt, RIL, variable) %>%
mutate(mean.SW_Total = mean(value)) %>%
ggplot(aes(x = RIL, y = mean.SW_Total, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ Trt)
编辑2
我已经升级了代码以响应我的编辑#1。 我相信这是正确的代码,但验证会很好。
melted1 %>%
ggplot(aes(x = RIL, y = value, fill = variable)) +
geom_bar(stat = 'summary', position = 'stack', fun.y = "mean") + facet_grid(~ Trt)
我不确定100%是否正确解释了您的问题,但是我认为这很接近您想要的(从此处进行调整)。
library(reshape2) # for melt
library(tidyverse)
# convert all total values to 0 except that for the control ...
data1 <- data1 %>%
mutate(SW_Total = ifelse(Trt != "Control", 0, SW_Total))
#convert to long format
melted <- melt(data1, id=c("Plant","RIL","Trt"))
ggplot(melted, aes(x = RIL, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ Trt)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.