gpt4 book ai didi

r - 如何从同一图上的单个文件中获取多年的 Y 轴数据?

转载 作者:行者123 更新时间:2023-12-01 16:18:22 24 4
gpt4 key购买 nike

我有三年多的燃气表读数,我试图用 R 绘制这些读数,以突出一年中几个月的日常使用量变化,并比较不同年份的使用量。

数据样本:

Date,Gas  
02/01/2010,4460.9
13/01/2010,4543
04/02/2010,4656
16/02/2010,4733
07/03/2010,4842
26/03/2010,4933.8

我可以根据定期读数计算平均每日使用量,并将几年内的整个数据绘制为单个数据系列:
A <- read.table("energy.csv", header=TRUE, fill=TRUE, sep=',')
A$Dates <- as.Date(A$Date, format="%d/%m/%Y")
for (j in 2:length(A$Gas)) {
A$GasDiff[j-1] = A$Gas[j] - A$Gas[j-1]
}
plot(A$Dates, A$GasDiff, type="o", lty=1, pch=20, ylab="Daily Consumption",
main="Gas Consumption")

但我不知道如何让 R 自动将数据拆分为不同的?帧?每一年,这样我就可以为每一年绘制单独的线。我可以仅使用每年的数据手动创建不同的输入文件,但它不雅,并且每年都需要更改代码。

我确定这是一个简单的问题,但我一直盯着手册,无法弄清楚。

最佳答案

无需按年份将数据拆分为数据框;您可以使用 ggplot2包装很容易按年份区分地块。首先我会补一些数据:

dts <- as.Date("20050101", '%Y%m%d') + seq(0,1000,15)
A <- data.frame( Dates = dts, Gas = 4000 + cumsum(abs( rnorm(length(dts), 100, 30))))

接下来我将向 A 添加两列: DayOfYear这是一年中的“天数”,以及 GasDiff列(与您的相同,但更容易生成,没有循环!):
A <- transform( A,               
Year = format(Dates, '%Y'),
DayOfYear = as.numeric( format(Dates, '%j')),
GasDiff = c(diff( Gas ),NA))

接下来我们使用 ggplot2首先一个接一个地绘制所有年份,但颜色不同:
require(ggplot2)
ggplot(A, aes(Dates, GasDiff)) + geom_line( aes(colour = Year))

这给了你这个:
alt text

或者,您可以在垂直网格中绘制不同的年份:
ggplot(A, aes(DayOfYear, GasDiff)) + geom_line( )  + facet_grid(Year ~ .)

你会得到这个:
alt text

更新:第三种方法是用不同的颜色/点在同一个图上绘制所有年份,如果您正在寻找季节性模式,这可能很有用(但在我的情况下看起来很糟糕,因为我制作了随机数据)。
ggplot(A, aes(DayOfYear, GasDiff)) + 
geom_line( aes(colour = Year) ) +
geom_point( aes(shape = Year))

alt text

关于r - 如何从同一图上的单个文件中获取多年的 Y 轴数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642828/

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