gpt4 book ai didi

r - ggplot : Multiple years on same plot by month

转载 作者:行者123 更新时间:2023-12-04 10:15:05 25 4
gpt4 key购买 nike

所以,我遇到了一些我认为我没有遇到过的东西。我搜索了谷歌寻找答案,但还没有找到任何东西(还)......

我有两个数据集——一个是 2015 年,另一个是 2016 年。它们代表 IT 系统的可用性。数据帧读取如下:

2015年数据集:

variable value
Jan 2015 100
Feb 2015 99.95
... ...

2015年数据集:
variable value
Jan 2016 99.99
Feb 2016 99.90
... ...

他们只是从 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()

当我处理 yearmon() 数据类型时,它以连续流形式绘制。我试过这样的事情:
ggplot(data2015,aes(months(variable),value)) +
geom_line(aes(color="2015")) +
geom_line(data=data2016,aes(color="2016")) +
theme_classic()

显然这行不通。我算了 months()可能还在以某种方式承载着这一年。如果我将它们绘制为 factors()他们不合时宜。任何帮助将不胜感激。提前谢谢你!

最佳答案

要获得每一年的单独一行,您需要从每个日期中提取年份并将其映射到颜色。要在 x 轴上获取月份(不含年份),您需要从每个日期中提取月份并映射到 x 轴。

library(zoo)
library(lubridate)
library(ggplot2)

让我们用 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)

现在为情节。我们将从 date 中提取年份和月份与 yearmonth函数分别来自 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()

enter image description here

关于r - ggplot : Multiple years on same plot by month,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com