使用plyr合并数据帧以绘制多个时间序列
我想在一个绘图上绘制多个时间序列。目前我可以单独绘制它们,但不能一起绘制。我如何加入数据,因为年份是用小数分割的 我基本上想要的结果是这个(见第一个答案中的情节)使用plyr合并数据帧以绘制多个时间序列,r,ggplot2,merge,R,Ggplot2,Merge,我想在一个绘图上绘制多个时间序列。目前我可以单独绘制它们,但不能一起绘制。我如何加入数据,因为年份是用小数分割的 我基本上想要的结果是这个(见第一个答案中的情节) 库(tidyverse) 图书馆(plyr) 主题组(主题组(10)) 悉尼1试试这个: Sydney1 %>% mutate(city = 'sydney1') %>% bind_rows(Sydney2 %>% mutate(city = 'sydney2')) %>% bind_rows(Eden
库(tidyverse)
图书馆(plyr)
主题组(主题组(10))
悉尼1试试这个:
Sydney1 %>% mutate(city = 'sydney1') %>%
bind_rows(Sydney2 %>% mutate(city = 'sydney2')) %>%
bind_rows(Eden %>% mutate(city = 'eden')) %>%
bind_rows(Freemantle %>% mutate(city = 'freemantle')) %>%
ggplot(aes(x=Year, y=SLR, color=city)) + geom_line() + facet_wrap(~city, scale='free')
假设您的全局环境仅包含要打印的数据帧:
bind_rows(mget(ls()), .id = "City") %>%
ggplot(aes(x = Year, y = SLR, color = City)) +
geom_line()
使用末尾注释中的数据首先将序列累加到列表L中——我们假设要添加具有列名Year
和SLR
的任何数据框——然后将其转换为单个zoo对象,并使用使用使用ggplot2的autoplot.zoo
对其进行绘图。如果希望在单独的面中打印,请删除facet=NULL
参数
library(ggplot2)
library(zoo)
is_city_df <- function(x) is.data.frame(x) && identical(names(x), c("Year", "SLR"))
L <- Filter(is_city_df, mget(ls()))
z <- do.call("merge", lapply(L, read.zoo))
autoplot(z, facet = NULL)
库(ggplot2)
图书馆(动物园)
is_city_df不是在全局环境中创建多个对象,而是可以在循环中一次读取所有对象
library(dplyr)
library(purrr)
library(ggplot2)
library(readr)
files <- c("Sydney1.csv", "Sydney2.csv", "Eden.csv", "Stonybay.csv",
"Lowhead.csv", "Hobart.csv", "Devonport.csv", "Freemantle.csv")
map_dfr(files, ~ read_csv(.x) %>%
mutate(City = .x)) %>%
ggplot(aes(x = Year, y = SLR, color = City)) +
geom_line())
库(dplyr)
图书馆(purrr)
图书馆(GG2)
图书馆(readr)
文件%
变异(城市=.x))%>%
ggplot(aes(x=年份,y=单反,颜色=城市))+
几何线()
谢谢你们两位,这真是太好了,更整洁了。非常感谢。您好,非常感谢您的评论。当我尝试运行此命令时,在match.fun(fun)中出现以下错误错误:未找到对象“read.zoo”
您知道原因吗?您可能没有运行库语句。啊,是的,我运行了它们,但未安装zoo
。使用install.package后工作正常
谢谢!
Sydney1 <-
structure(list(Year = c(1886.0417, 1886.125, 1886.2083, 1886.2917,
1886.375, 1886.4583), SLR = c(6819L, 6942L, 6980L, 6958L, 7015L,
6892L)), row.names = c(NA, 6L), class = "data.frame")
Sydney2 <-
structure(list(Year = c(1914.4583, 1914.5417, 1914.625, 1914.7083,
1914.7917, 1914.875), SLR = c(7022L, 6963L, 6915L, 6924L, 6866L,
6956L)), row.names = c(NA, 6L), class = "data.frame")
Eden <-
structure(list(Year = c(1986.7917, 1986.875, 1986.9583, 1987.0417,
1987.125, 1987.2083), SLR = c(7003L, 6942L, 6969L, 7067L, NA,
7015L)), row.names = c(NA, 6L), class = "data.frame")
Freemantle <-
structure(list(Year = c(1897.0417, 1897.125, 1897.2083, 1897.2917,
1897.375, 1897.4583), SLR = c(6542L, 6524L, 6557L, 6655L, 6648L,
6729L)), row.names = c(NA, 6L), class = "data.frame")
library(dplyr)
library(purrr)
library(ggplot2)
library(readr)
files <- c("Sydney1.csv", "Sydney2.csv", "Eden.csv", "Stonybay.csv",
"Lowhead.csv", "Hobart.csv", "Devonport.csv", "Freemantle.csv")
map_dfr(files, ~ read_csv(.x) %>%
mutate(City = .x)) %>%
ggplot(aes(x = Year, y = SLR, color = City)) +
geom_line())