r - 使用 ggplot 绘制多个条形图
问题描述
我有一个名为 frame 的数据框。点击这里查看。它有 20 行。我希望使用 ggplot 获得 4x5 矩阵中的条形图。在每个条形图中,D05、D12、D18 和 D28 位于 x 轴上,相应的值位于 y 轴上。我知道这可以使用 facet_wrap 来完成。我尝试了以下但没有得到预期的结果:
ggplot(data = frame[,-1], aes(x = frame$Date)) +
geom_bar() +
facet_wrap( ~ frame$Date, ncol = 5)
我该如何进行?
解决方案
您需要先重塑数据。
数据
下次请尝试将此块放入您的问题中,并指定错误消息。
a <- data.frame( Date = c("2017-04",
"2017-05",
"2017-06",
"2017-07",
"2017-08",
"2017-09",
"2017-10",
"2017-11",
"2017-12",
"2018-01",
"2018-02"),
DO5 = c(0,0,0,15,18,21,23,15,18,15,11),
D12 = c(0,0,0,605,737,620,642,599,607,663,548),
D18 = c(36,33,38,7,13,15,13,24,40,37,25),
D28 = c(502,626,627,28,35,40,19,17,6,1,1)
)
重塑它
在这种情况下,你可以使用许多包来做到这一点,我使用最简单的一个(代码方面)。
install.packages("reshape2")
library(reshape2)
b <- melt(a)
head(b)
names(b)
现在剧情
您不需要在 ggplot2中使用“$”运算符。(大多数情况下,当您在正在使用的函数中指定参数数据时)
library(ggplot2)
ggplot(data = b, aes(x = variable, y = value)) +
geom_bar(stat = "identity") +
facet_wrap( ~ Date, ncol = 5)
推荐阅读
- c# - 如何在 node.js 或 C#/.NET 中发送消息处理通知电子邮件?
- javascript - 从表格中出来的附加 div
- javascript - 单击新的 Collapsible 后关闭其他打开的 Collapsible
- bash - 为什么新行最后添加到变量中?
- xml - 如何使 Azure API 管理(API 网关)CORS 策略动态化?
- android - 如何在颤动中阅读“旧”sqlite?
- node.js - Swagger Express 续集
- javascript - 如何指定 cookie 在整个站点上显示直到关闭?
- java - "No Metrics " in Flink webUI
- c# - 函数式语言中中介模式的等价物是什么?