ggplot2-导入和绘制多个.csv文件

时间:2018-08-07 06:30:55

标签: r ggplot2

我尝试了批量导入,但是我认为ggplot2需要数据帧,而我只能列出一个元素列表。我在ggplot2中设置了一个简单的代码,该代码从多个csv文件导入数据并覆盖其趋势线。所有.csv文件都位于同一文件夹中,并且格式相同。有没有一种方法可以从文件夹中导入所有.csv文件,并将其全部绘制在ggplot中,而无需将该代码复制数百遍?

谢谢您的帮助!

library(ggplot2)
points1 <- read.csv("http://drive.google.com")[1:10,1:2]
points2 <- read.csv("http://drive.google.com")[1:10,1:2]
g <- (ggplot(points1, aes(x=ALPHA, y=BETA))
+labs(title="Model Run", subtitle="run4", y="LabelY", x="LabelX", caption="run4")
+ coord_cartesian(xlim=c(0,10), ylim=c(0,11)) 
#+ geom_point(data = points1)#
+geom_smooth(method="loess", span=.8, data = points1, se=FALSE)
#+ geom_point(data = points2)#
+geom_smooth(method="loess", span=.8, data = points2, se=FALSE))
plot(g)

1 个答案:

答案 0 :(得分:2)

这很有趣。我正在使用tidyverse中的一些软件包(ggplot,purrr,readr)来使其更加一致。

由于您要在一个图中绘制所有数据,因此将所有数据放入一个数据帧是有意义的。函数purrr::map_df就是完美的选择。

library(tidyverse)

files <- list.files("data/", "*.csv", full.names = T)
names(files) <- list.files("data/", "*.csv")

df <- map_df(files, ~read_csv(.), .id = "origin")

df %>% ggplot()+
    aes(x,y, color = origin)+
    geom_point()

一些解释

前两行创建一个命名向量,其元素是csv文件的完整路径,并且该向量的名称是文件名。这使使用.id的{​​{1}}参数变得更容易,该参数从文件名中创建了一个附加列,名称为“ origin”。刚开始时map_df内的符号可能有点怪异,您还可以在其他地方提供写在每个元素上的函数,但是map符号很方便:它在那里创建了一个函数,并且此函数始终将参数~作为要迭代的向量或列表的当前元素。