【问题标题】:multiple plots of time series in one graph in R [closed]R中一张图中的多个时间序列图[关闭]
【发布时间】:2021-01-27 23:00:21
【问题描述】:

我有这样的数据

  var1<- rnorm(100, 5, 10)
  var2<- rnorm(100, 300, 45)
  country <- rep(c("a","b","c","d","e","f","g","h","k","l"),each=10)
  year <- rep(2000:2009,length.out=10)
  data1 <-data.frame(country,year,var1,var2)

我想制作一个包含许多小图的大图,在每个图中查看 var1 和 var2 随时间变化的线,其中每个小图对应一个国家/地区。理想情况下,设置列数是可选的,比如说 4 个 grpah 的列和一个大的大小/形状,因为我的国家比这里多得多,我将不得不为此进行调整..

非常感谢

【问题讨论】:

  • ggplot2 中检查?facet_wrap?facet_grid。文档非常好,SO 中有很多示例。
  • 展示你的尝试对你来说真的更好。您可以通过在线搜索小的倍数来找到教程,尝试一些东西,然后更具体地发布没有效果的东西

标签: r ggplot2 graph


【解决方案1】:

通常的方法是引入长格式数据并使用facet_wrap/facet_grid 创建多个小图。您可以使用ncolnrow 来指定绘图的格式。

library(tidyverse)

data1 %>%
  pivot_longer(cols = var1:var2) %>%
  mutate(year = factor(year)) %>%
  ggplot() + aes(year, value, color = name, group = name) + 
  geom_line() + facet_wrap(~country, ncol = 2)

【讨论】:

  • 非常感谢!我可以将年份设置在每个图表下方而不是最后一个图表的底部并将其导出为 pdf 吗?
  • 您可以在facet_wrap 中设置scales = 'free' 以获取每个图表下方的数字,例如facet_wrap(~country, ncol = 2, scales = 'free')。要在 pdf 中将其保存在变量 p1 &lt;- data1 %&gt;%pivot_longer(cols = var1:var2) ........ 中的输出并使用 ggsave('temp.pdf', p1)