【问题标题】:ggplot2 - importing and plotting multiple .csv filesggplot2 - 导入和绘制多个 .csv 文件
【发布时间】:2018-08-07 06:30:54
【问题描述】:

我尝试过批量导入,但我认为 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)

【问题讨论】:

  • 不确定 R 和谷歌驱动器,但例如在 C# 中,您可以将文件夹中特定扩展名的所有文件选择到数组中,然后将它们循环...也许您可以在 R 中做同样的事情?只是可能的逻辑的想法

标签: r ggplot2


【解决方案1】:

这是一个有趣的。我正在使用来自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 文件的完整路径,该向量的名称是文件名。这使得使用map_df.id 参数更容易,它从文件名中创建了一个额外的列namend “origin”。 map 中的符号一开始可能看起来有点奇怪,你也可以提供一个写在别处的函数来应用于每个元素,但是 ~ 符号非常方便:它在那里创建一个函数,这个函数总是接受参数. 作为您正在迭代的向量或列表的当前元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 2015-05-03
    • 2018-11-22
    • 2020-03-06
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多