使用ggplot的多个条形图

时间:2019-02-16 19:20:09

标签: r ggplot2

我有一个名为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)

我该如何进行?

1 个答案:

答案 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)

The result is this