R 带有两个独立条带多个值的df的条形图
以下问题: 我有这个数据集R 带有两个独立条带多个值的df的条形图,r,dataframe,ggplot2,R,Dataframe,Ggplot2,以下问题: 我有这个数据集 df Ch V1 V2 A a1 a2 B b1 b2 C c1 c2 .... 而V1和V2是数值。我想为每个V1和V2值创建一个带有条形图的条形图。 我试过的代码 ggplot(data = df %>% gather(Variable, No., -Ch), aes(x = reorder(ID,-
df
Ch V1 V2
A a1 a2
B b1 b2
C c1 c2
....
而V1和V2是数值。我想为每个V1和V2值创建一个带有条形图的条形图。
我试过的代码
ggplot(data = df %>% gather(Variable, No., -Ch),
aes(x = reorder(ID,-No.), y = No., fill = Variable)) +
geom_bar(stat = 'identity', position= position_dodge())+
geom_col()+
xlab("Section of industry")+
ylab("No. of occurences")+
theme_classic()+
theme(axis.text.x = element_text(angle = 45, size=1),
plot.title = element_text(hjust = 0.5),
legend.position = "top")+
ggtitle("XXX")
即使使用position=position\u dodge(),它也只会将两个条合并为一个,如下所示:
你知道我该如何分离这个位置,或者为什么positon_dodge()不起作用吗?我想是因为我以前用过聚集函数吧
另一个问题是,Ch的值太大,因此如果我想以可读的方式显示它们,图形“消失”。是否有方法显示这些值(可能将值写在两行中),以便显示
多谢各位 您的问题是在
ggplot
调用中既有geom\u bar
又有geom\u col
,因此geom\u bar中的position\u dodge()
参数被geom\u col
覆盖,从而生成一个堆叠的条。因此,删除geom_col
应该是可行的。或者,您可以删除geom\u栏
并将position=position\u dodge()
传递到geom\u col
要缩写x标签,您可以使用scale\u x\u discrete(缩写)
,如本文所述:
库(dplyr)
图书馆(GG2)
图书馆(tidyr)
df%>%pivot\u更长(,-Ch,names\u to=“Var”,values\u to=“Val”)%>%
ggplot(aes(x=Ch,y=Val,fill=Var))+
几何坐标(位置=位置减淡()+
xlab(“工业部门”)+
ylab(“发生次数”)+
主题(经典)+
主题(axis.text.x=元素\文本(角度=45,hjust=1),
plot.title=元素\文本(hjust=0.5),
legend.position=“top”)+
标题(“XXX”)+
比例x离散(标签=缩写)
示例数据
结构(列表(Ch=structure(1:5,.Label=c)(“aaaaaaaaaaaa”),
“bbbbbbbbbb”、“cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
),class=“factor”),V1=1:5,V2=5:9),class=“data.frame”,row.names=c(NA,
-(5升)