【发布时间】:2018-06-30 23:32:31
【问题描述】:
我对 R 中的绘图(时间序列)有疑问,希望有人能给我一些建议:
我有一个 R 项目(最新版本),我想将河流流出量与降水量和其他气候因素进行比较。我想按季节和/或月份来做这件事。但是,当我想绘制我的数据时,R 按月创建 X 轴。要将所有数据(月份)放在一个图中,我的想法是 x 轴显示月份的天数,而 y 轴显示升/秒。但是如何改变 R 关于 x 轴的行为呢?
这是我的示例数据(50 个数据集):
outflow = outflow_orig[sample(nrow(outflow_orig),50),]
show(outflow)
datum liter_s
939 03.12.2012 16.40
422 31.01.2008 53.62
1373 18.02.2016 37.34
997 28.06.2013 117.20
719 30.07.2010 50.62
1253 09.06.2015 57.36
79 19.11.2004 21.62
1012 31.08.2013 60.28
745 08.11.2010 37.96
562 05.03.2009 77.28
15 27.12.2003 18.47
730 03.09.2010 45.93
1150 16.10.2014 18.47
460 12.06.2008 48.79
104 03.02.2005-na 26.66
504 20.11.2008 17.46
1048 11.01.2014 41.12
1241 09.05.2015 61.03
763 04.01.2011 49.47
1146 02.10.2014 18.47
1224 04.04.2015 66.36
909 19.07.2012 31.71
155 27.04.2005 75.87
147 12.04.2005 71.96
889 30.04.2012 59.35
268 09.06.2006 64.70
797 11.04.2011 59.65
932 02.11.2012 17.97
657 08.01.2010 41.93
113 11.12.2003 19.43
226 05.01.2006 26.31
396 06.11.2007 20.26
82 03.12.2004 20.35
1062 21.02.2014 39.29
299 09.11.2006 23.11
1264 09.07.2015 47.15
152 21.04.2005-17.15 81.40
665 11.02.2010 48.90
348 12.04.2007 53.17
407 11.12.2007 32.53
648 25.12.2009 36.46
785 24.02.2011 81.10
1331 01.12.2015 18.96
711 07.07.2010 46.40
498 31.10.2008 17.66
1489 26.10.2016 19.43
606 22.07.2009 46.85
496 23.10.2008 17.97
1120 18.08.2014 16.93
946 23.12.2012 23.47
创建一个 XTS 对象是因为有时我每天有两个测量值和数据集中的字符。
outflow.xts <- apply.daily(xts(outflow$liter_s, order.by = strptime(outflow$datum, format = "%Y-%m-%d", tz = "")),"mean", na.rm=TRUE)
outflow.df <- data.frame(date=index(outflow.xts), coredata(outflow.xts))
str(outflow.df)
'data.frame': 1456 obs. of 2 variables:
$ Datum : Date, format: "2003-11-05" "2003-11-09" "2003-11-12" ...
$ liter_s: num 19.9 19.9 23.5 19.4 19.4 ...
提取月份/季节:
january = outflow.xts[.indexmon(outflow.xts) %in% c(0)]
summer = outflow.xts[.indexmon(outflow.xts) %in% c(6,7,8)]
第二:气候数据:
klimadaten <- read.csv(file="Klimastation_Langensallach-2003-2016-LFL_Bayern.csv",header = TRUE,sep = ";", dec=".", stringsAsFactors = FALSE)
klimadaten$datum = as.Date(klimadaten$datum, format("%d.%m.%Y"))
klimadaten[,2:7] = apply(klimadaten[,2:7], 2, as.numeric)
# Remove NA
klimadaten = klimadaten[complete.cases(klimadaten[, 6]),]
str(klimadaten)
'data.frame': 4580 obs. of 7 variables:
$ datum : Date, format: "2003-11-01" "2003-11-02" "2003-11-03" ...
$ eistag : num 0 0 0 0 0 0 0 0 0 0 ...
$ frosttag : num 0 0 0 0 0 0 0 0 0 1 ...
$ temp_luft_2m : num 6.52 5.43 7.77 7.9 6.04 5.2 3.94 5.63 5.28 1.46 ...
$ niederschlag_mm: num 0.7 0.1 0.3 0 0 0 0 0 0 0.1 ...
$ temp_boden_5cm : num 6.39 6.19 6.25 6.68 5.69 5.2 5.08 4.97 4.77 4.52 ...
$ luftfeuchte_rel: num 91.9 87.7 82 83.8 81.7 ...
head(klimadaten)
datum eistag frosttag temp_luft_2m niederschlag_mm temp_boden_5cm luftfeuchte_rel
1 2003-11-01 0 0 6.52 0.7 6.39 91.93
2 2003-11-02 0 0 5.43 0.1 6.19 87.73
3 2003-11-03 0 0 7.77 0.3 6.25 82.03
4 2003-11-04 0 0 7.90 0.0 6.68 83.84
5 2003-11-05 0 0 6.04 0.0 5.69 81.74
6 2003-11-06 0 0 5.20 0.0 5.20 68.53
现在我在 R 方面的真正基础知识结束了......我如何在一张图表中绘制流出月份,第二张如何绘制参考气候数据的季节和子集?
真的,感谢您的任何帮助和建议。
来自德国的亲切问候 萨沙
【问题讨论】:
-
如果您提供a complete minimal reproducible example 来回答您的问题,我们更有可能为您提供帮助。我们可以从中工作并使用它来向您展示如何回答您的问题。用
head()显示数据很好,但我们不能轻易地拿起它并使用它来演示可能的解决方案。我还建议看看how do I ask a good question。证明你已经付出了一些努力通常是件好事。 -
你好 Eric Fail,我唯一错过的是原始数据。我可以在这里放置一些原始数据:
-
我认为链接在翻译中丢失了。并不是说建议制作 minimal 可重现的示例 [强调添加]。在构建可重现的示例时,经常会发现错误。至少这经常发生在我身上。
标签: r plot time-series xts