R 绘制条形图
我有一个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) 然后,您可以使用函数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
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])