Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot堆叠条形图无值仅计数_R_Ggplot2 - Fatal编程技术网

R ggplot堆叠条形图无值仅计数

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

数据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)),
                "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")