我正在尝试使用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;中的值。不要重复。结果是:
在我看来,相同的图表被重复并一遍又一遍地挤压。这可能是因为R并不了解&#34; date&#34;价值观是独一无二
我该如何解决这个问题?
提前致谢!
答案 0 :(得分:0)
根据您目前所做的工作,您可以使用lubridate
和dplyr
执行以下操作。如果这不是你想要的,它会让你接近。
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