首页 > 解决方案 > 绘制条形图

问题描述

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

标签: rggplot2plotbar-chart

解决方案


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

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

堆积条形图

library(data.table)
ggplot(melt(setDT(DT), measure.vars = names(DT))) +
  aes(x = cut(value, seq(0, 1, 0.2)), fill = variable) + 
  geom_bar() +
  xlab(("interval"))

在此处输入图像描述

这类似于dc37 的答案,但cut()aes().

分面条形图

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")

在此处输入图像描述

这可能更符合 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])

推荐阅读