R 绘制条形图

R 绘制条形图,r,ggplot2,plot,bar-chart,R,Ggplot2,Plot,Bar Chart,我有一个1090行和5列(a、B、C、D、E)的数据帧。每个列变量的所有值都在0和1之间。如何绘制x轴条形图,显示每个列变量的间隔为0-0.2、0.2-0.4、0.4-0.6、0.6-0.8和0.8-1.0?谢谢。您可以1)将数据重新格式化为更长的格式,使所有值都位于一列和一个包含a、B、。。。 2) 然后,您可以使用函数cut在列中生成包含每个组的每个间隔的值和计数的间隔: library(tidyr) 图书馆(dplyr) df%>%pivot\u更长(everythings(),names

我有一个1090行和5列(a、B、C、D、E)的数据帧。每个列变量的所有值都在0和1之间。如何绘制x轴条形图,显示每个列变量的间隔为0-0.2、0.2-0.4、0.4-0.6、0.6-0.8和0.8-1.0?谢谢。

您可以1)将数据重新格式化为更长的格式,使所有值都位于一列和一个包含a、B、。。。 2) 然后,您可以使用函数
cut
在列中生成包含每个组的每个间隔的值和计数的间隔:

library(tidyr)
图书馆(dplyr)
df%>%pivot\u更长(everythings(),names\u to=“Var”,values\u to=“Val”)%>%
突变(间隔=切割(Val,断裂=c(0,0.2,0.4,0.6,0.8,1.0)))%>%
分组依据(变量,区间)%>%count()
#一个tibble:25x3
#组:Var,区间[25]
Var区间n
1A(0,0.2]18
2A(0.2,0.4]19
3A(0.4,0.6]16
4a(0.6,0.8]24
5a(0.8,1]23
6b(0,0.2]17
7b(0.2,0.4]25
8b(0.4,0.6]18
9b(0.6,0.8]22
10b(0.8,1]18
#…还有15行
您可以使用前面的工作流,并将其添加到打印功能中,如下所示:

library(tidyr)
图书馆(dplyr)
图书馆(GG2)
df%>%pivot\u更长(everythings(),names\u to=“Var”,values\u to=“Val”)%>%
突变(间隔=切割(Val,断裂=c(0,0.2,0.4,0.6,0.8,1.0)))%>%
ggplot(aes(x=区间,fill=Var))+
geom_bar()

它看起来像你所期待的吗

数据


df为了完整起见,这里还有一个解决方案,它使用
melt()
从宽格式重新塑造为长格式。几乎总是,
ggplot()
最适合长格式的数据

它还显示了处理列变量的两种变体:使用不同填充颜色的堆叠和镶嵌面

堆积条形图

这类似于但是在
aes()
中调用
cut()

平面条形图

这可能更符合OP的要求,“x轴条形图显示每个列变量的间隔为0-0.2、0.2-0.4、0.4-0.6、0.6-0.8和0.8-1.0”

资料 这是创建包含5列随机数的data.table的简明方法:

library(data.table)
set.seed(123L)
DT <- setnames(as.data.table(replicate(5L, runif(100L))), LETTERS[1:5])
库(data.table)
种子集(123L)
DT
library(data.table)
ggplot(melt(setDT(DT), measure.vars = names(DT))) +
  aes(x = cut(value, seq(0, 1, 0.2)), fill = variable) + 
  geom_bar() +
  facet_wrap(vars(variable), nrow = 1L) +
  xlab(("interval")) +
  theme(legend.position = "none")
library(data.table)
set.seed(123L)
DT <- setnames(as.data.table(replicate(5L, runif(100L))), LETTERS[1:5])