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

R 在ggplot中绘制多条直线,x轴重复,r,charts,ggplot2,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

我正在尝试用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
然后,我使用包“Reformate2”的melt()函数来融化这些数据:

我的目标是在x轴上有“日期”的值,在图表的y轴上有3行:“p”、“pp”和“HP”。然后,我使用以下代码尝试绘制图表:

> h<-ggplot(meltPPP,aes(date,value,group=variable,colour=variable))
> h+geom_line()
>h+geom_线()
然而,R似乎不明白“日期”中的值不能重复。结果是:

在我看来,同一张图表被反复挤压。这可能是因为R不理解“日期”值是唯一的

我怎样才能解决这个问题


提前谢谢

根据您目前所做的工作,您可以使用
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
库(dplyr)
图书馆(lubridate)
图书馆(GG2)

PPP您可以使用
lubridate
包来转换日期,或者在base R中,您可以使用
as.POSIXct
来转换为应该工作的类型。例如,您可以将像这样的日期转换为.POSIXct('2016-04-04 12:34:56')
,或者使用像这样的
lubridate
库(lubridate)和
ymd_-hms('2016-04-04 12:34:56')
。注意,您的日期格式不同,使用
lubridate
时,您可能需要使用
dmy
功能。
> h<-ggplot(meltPPP,aes(date,value,group=variable,colour=variable))
> h+geom_line()
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