微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何基于一个因子从1个数据集中迭代构建和导出多个图形

如何解决如何基于一个因子从1个数据集中迭代构建和导出多个图形

我有一个数据文件(WQ_data_forMultipleStations.csv),其中包含三个变量:StationNameTime_hrDO_mgL。该文件包含50个站(站1,站2,站3 ...站50)的数据。

我想创建和导出50个单独的图,每个工作站一个图,每个图作为单独的图像文件导出。

每个图形都将具有相同的格式:x轴上为Time_hr,y轴上为DO_mgL,图形名称StationName,并以JPG格式导出,并带有文件StationName。jpg。

我是R的新手,我已经想出要使用构面制作一个包含50个子图的巨型图(请参见下面的代码),但是我非常感谢帮助将每个子图制作成单独的图,然后导出50图形为50个单独的且命名明确的图像文件。谢谢!

library ("ggplot2")
WQ_byStation <- read.csv("WQ_data_forMultipleStations.csv")
WQ_byStation_plots <- ggplot(WQ_byStation,aes(x = Time_hr,y = DO_mgL)) + 
  geom_point() +
  geom_line() +
  facet_wrap(~ StationName)
ggsave(filename="WQ_byStation_plots.jpg",plot=WQ_byStation_plots)

解决方法

这是一个如何使用mtcars数据集的for循环完成此操作的小例子

for(g in unique(mtcars$gear)) {
  f <- filter(mtcars,gear == g)
  
  p <- ggplot(f,aes(disp,hp)) +
    geom_point()
  
  ggsave(paste0('plot_',g,'.jpg'),p)
}

您的情况就是这样

for(s in unique(WQ_byStation$StationName)){
  
  f <- filter(WQ_byStation,StationName == s)
  
  p <- ggplot(f,aes(x = Time_hr,y = DO_mgL)) + 
    geom_point() +
    geom_line() +
    ggtitle(s)
  
  ggsave(paste0(s,p)
  
}

请注意,您可以通过在ggsave中指定路径来保存到文件夹。例如。 my_folder/WQ_bySation...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。