所以,我遇到了一些我认为没有遇到过的东西.我搜索谷歌寻找答案,但还没找到任何东西(还)...
我有两个数据集 - 一个用于2015年,一个用于2016年.它们代表了IT系统的可用性.数据框如下:
2015年数据集:
variable value
Jan 2015 100
Feb 2015 99.95
... ...
Run Code Online (Sandbox Code Playgroud)
2015年数据集:
variable value
Jan 2016 99.99
Feb 2016 99.90
... ...
Run Code Online (Sandbox Code Playgroud)
他们只是从1月到12月列出了系统的可用性."变量"列是as.yearmon
数据类型,值是简单数字.
我想geom_line()
用ggplot2 创建一个图表,它基本上将百分比作为y轴,将月份作为x轴.我已经能够做到这一点有两条线,但x轴从2015年1月到2016年12月.我想要的是让它们只按月绘制,所以它们重叠.我已经用尺度等尝试了各种各样的东西,但我还没弄清楚如何做到这一点.
基本上,我需要x轴按时间顺序读取1月到12月,但我想在同一图表上绘制2015年和2016年.这是我的ggplot代码(非工作),因为我现在拥有它:
ggplot(data2015,aes(variable,value)) +
geom_line(aes(color="2015")) +
geom_line(data=data2016,aes(color="2016")) +
scale_x_yearmon() +
theme_classic()
Run Code Online (Sandbox Code Playgroud)
当我处理yearmon()数据类型时,这将在连续流中绘制.我尝试过这样的事情:
ggplot(data2015,aes(months(variable),value)) +
geom_line(aes(color="2015")) +
geom_line(data=data2016,aes(color="2016")) +
theme_classic()
Run Code Online (Sandbox Code Playgroud)
显然这是行不通的.我想这months()
可能仍然以某种方式带着这一年.如果我绘制它们,因为factors()
它们不合适.任何帮助将非常感谢.先感谢您!
eip*_*i10 12
要获得每年的单独行,您需要从每个日期中提取年份并将其映射到颜色.要在x轴上获得月份(无年份),您需要从每个日期中提取月份并映射到x轴.
library(zoo)
library(lubridate)
library(ggplot2)
Run Code Online (Sandbox Code Playgroud)
让我们用as.yearmon
格式的日期创建一些假数据.我将创建两个单独的数据框,以匹配您在问题中描述的内容:
# Fake data
set.seed(49)
dat1 = data.frame(date = seq(as.Date("2015-01-15"), as.Date("2015-12-15"), "1 month"),
value = cumsum(rnorm(12)))
dat1$date = as.yearmon(dat1$date)
dat2 = data.frame(date = seq(as.Date("2016-01-15"), as.Date("2016-12-15"), "1 month"),
value = cumsum(rnorm(12)))
dat2$date = as.yearmon(dat2$date)
Run Code Online (Sandbox Code Playgroud)
现在为情节.我们将从中提取的年份和月份date
与year
和month
功能,分别从lubridate
包.我们还将年份变成一个因子,因此ggplot将使用年份的分类调色板,而不是连续的颜色渐变:
ggplot(rbind(dat1,dat2), aes(month(date, label=TRUE, abbr=TRUE),
value, group=factor(year(date)), colour=factor(year(date)))) +
geom_line() +
geom_point() +
labs(x="Month", colour="Year") +
theme_classic()
Run Code Online (Sandbox Code Playgroud)