我有一个名为frame的数据框。 Click here to see。它有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)
我该如何进行?
答案 0 :(得分:1)
您需要首先重塑数据。
请下次尝试将此块放入您的问题中,并指定错误消息。
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中使用“ $” 运算符。 (大多数情况下,当您在要使用的函数中指定参数 data 时)
library(ggplot2)
ggplot(data = b, aes(x = variable, y = value)) +
geom_bar(stat = "identity") +
facet_wrap( ~ Date, ncol = 5)