R 在ggplot中绘制多条直线,x轴重复
我正在尝试用R中的ggplot绘制一个包含多行的图表。这应该是相当简单的,但是我似乎无法成功 我的数据框如下: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
> 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