如何并排制作两个条形图

时间:2020-11-08 04:26:20

标签: r

我想为A.xA.y制作图形并排放置。

aggregate(A~ B , mydata, mean) 
aggregate(A~ B , mydata, sd) 
mydata2 <- aggregate(A~B , mydata, mean) 
mydata3 <- aggregate(A~B , mydata, sd) 

library(dplyr)
mydata2 <- mydata2 %>% dplyr::select(B = 1, A = 2) %>% dplyr::mutate_if(is.numeric, ~ round(., 3))
mydata3 <- mydata3 %>% dplyr::select(B = 1, A = 2) %>% dplyr::mutate_if(is.numeric, ~ round(., 3))
mydata4<- merge(x = mydata2, y = mydata3, by = 'B', all.x = TRUE)
mydata4

library(ggplot2)


ggplot(data=mydata4) + geom_bar(aes(x=B, y = A.x, fill=A.y), stat = "identity", position="dodge")

结果不是我想要的。

这是mydata4的图片。

enter image description here

我的目标是做这样的事情:

enter image description here

1 个答案:

答案 0 :(得分:0)

知道了,您必须重塑数据。复制tjtis代码

library(tidyverse)

mydata4 <- mydata4 %>% pivot_longer(cols = c(A.x, A.y), names_to = 'name', values_to = 'val')

mydata4
# A tibble: 14 x 3
   B     name    val
   <chr> <chr> <dbl>
 1 A     A.x   1.96 
 2 A     A.y   1.12 
 3 A/B   A.x   2.25 
 4 A/B   A.y   1.03 
 5 A/B/C A.x   2.5  
 6 A/B/C A.y   1.18 
 7 A/C   A.x   3    
 8 A/C   A.y   1.41 
 9 B     A.x   2.72 
10 B     A.y   1.32 
11 B/C   A.x   2.75 
12 B/C   A.y   0.957
13 C     A.x   2.73 
14 C     A.y   1.30  

ggplot(data=mydata4) + geom_col(aes(x=B, y = val, fill=name), position="dodge")

enter image description here

相关问题