R ggplot堆叠条形图无值仅计数
数据1=熔化(数据,id.vars=“id”) 企图R ggplot堆叠条形图无值仅计数,r,ggplot2,R,Ggplot2,数据1=熔化(数据,id.vars=“id”) 企图 set.seed(1) data = data.frame("ID" = (1:1000), "S1"=sample(1:5, r=T,1000), "S2"=c(sample(1:5, r=T,990), rep(NA,10)), "S3"=c(sample(1:5, r=T,990), rep(NA,10)), "S
set.seed(1)
data = data.frame("ID" = (1:1000),
"S1"=sample(1:5, r=T,1000),
"S2"=c(sample(1:5, r=T,990), rep(NA,10)),
"S3"=c(sample(1:5, r=T,990), rep(NA,10)),
"S4"=c(sample(1:5, r=T,990), rep(NA,10)),
"S5"=c(sample(1:5, r=T,995), rep(NA,5)),
"S6"=sample(1:5, r=T,1000),
"S7"=sample(1:5, r=T,1000),
"S8"=sample(1:5, r=T,1000),
"S9"=sample(1:5, r=T,1000),
"S10"=sample(1:5, r=T,1000))
这些是我的数据。我希望生成一个行李图,如:
其中X轴是数据列名中的数值,颜色等于值(1始终在底部为红色,2始终在中间为橙色,3始终在顶部为黄色),每个条的实际高度是每个S变量中值的总和。因此,例如,在图中所示的1处,红色条的高度是“S1”中的“1”值的数量
geom_条
默认情况下,使用stat=“count”
函数从ggplot2
计算x的值数量。与填充类别相结合,它将计算与每个填充相结合的每个x的值的数量(此处为1,2,3,4…)
在这里,我使用了tidyr
包中的pivot\u longer
函数将数据帧重塑为更适合ggplot2
语法的更长格式。我过滤掉了NA
,以便得到没有NA值的实际计数
另外,我在geom\u栏中使用position\u stack(reverse=TRUE)
来获得正确的颜色模式顺序
总之,它为您提供了:
库(dplyr)
图书馆(tidyr)
图书馆(GG2)
数据%>%pivot\u更长(-ID,name\u to=“X”,value\u to=“Val”)%%>%
突变(X=因子(X,唯一(X)))%>%
过滤器(!is.na(Val))%>%
ggplot(aes(x=x,fill=factor(Val)))+
几何图形条(位置=位置堆栈(反向=真))
非常感谢,真是太棒了。如何处理s2-s4底部的空格?例如,我只希望前面的条更低,因为它们的值更少。换句话说,我不想在图中包含NA,我只是想表明后面还有更多,如实际值的数量所示。不客气,我根据您的问题编辑了我的答案。
ggplot(data1, aes(fill=value, y=sum(value), x=variable)) +
geom_bar(position="stack", stat="identity")