在ggplot中绘制多条线,x轴重复

时间:2016-04-16 00:24:56

标签: r charts ggplot2

我正在尝试使用R中的ggplot绘制多行图表。这应该相当简单,但我似乎无法成功。

我的数据框如下:

> head(PPP)
        date     P       pp     HP
1 28.07.2011 38.88 38.88000 40.824
2 29.07.2011 39.14 39.14000 40.824
3 01.08.2011 38.29 38.83005 40.824
4 02.08.2011 39.07 39.07480 40.824
5 03.08.2011 40.75 39.71282 40.824
6 04.08.2011 38.40 38.94552 40.824

然后我使用包裹的" reshape2"

来融化这些数据。
> meltPPP<-melt(PPP,id="date")

结果如下(需要注意的是,&#34; date&#34;列现在包含重复的值):

> head(meltPPP)
        date variable value
1 28.07.2011        P 38.88
2 29.07.2011        P 39.14
3 01.08.2011        P 38.29
4 02.08.2011        P 39.07
5 03.08.2011        P 40.75
6 04.08.2011        P 38.40

我的目标是在x轴上设置&#34; date&#34;的值。并且在图表的y轴上有3行:&#34; P&#34;,&#34; pp&#34;和&#34; HP&#34;。然后,我使用以下代码尝试绘制图表:

> h<-ggplot(meltPPP,aes(date,value,group=variable,colour=variable))
> h+geom_line()

但是,似乎R并不了解&#34; date&#34;中的值。不要重复。结果是:

enter image description here

在我看来,相同的图表被重复并一遍又一遍地挤压。这可能是因为R并不了解&#34; date&#34;价值观是独一无二

我该如何解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

根据您目前所做的工作,您可以使用lubridatedplyr执行以下操作。如果这不是你想要的,它会让你接近。

library(dplyr)
library(lubridate)
library(ggplot2)

PPP <- read.table(header=TRUE, stringsAsFactors = TRUE, text = 'date     P       pp     HP
28.07.2011 38.88 38.88000 40.824
29.07.2011 39.14 39.14000 40.824
01.08.2011 38.29 38.83005 40.824
02.08.2011 39.07 39.07480 40.824
03.08.2011 40.75 39.71282 40.824
04.08.2011 38.40 38.94552 40.824
')

PPP <- PPP %>% mutate(date = dmy(date))
meltPPP<-melt(PPP,id="date")
h <- ggplot(meltPPP,aes(date,value,group=variable,colour=variable)) +
     geom_line()
h

enter image description here