“绘制多个csv”;“世界其他地区”;Matlab中的文件(或R,如果您愿意) 问题

“绘制多个csv”;“世界其他地区”;Matlab中的文件(或R,如果您愿意) 问题,r,matlab,csv,plot,R,Matlab,Csv,Plot,我有50个具有此结构的.csv文件: value1,value2,... 一个单独的长行,每个值用逗号分隔 具体来说,它们是浮点数,每个csv都有不同数量的值 0.0023593,0.0062565,0.00723753,0.0023353,0.0052353,0.0024353,... 我必须在同一个图表中绘制每个数据文件,以找到这些值的趋势,可能还有一个平均图 如何以简单的方式完成此操作?首选Matlab,但R正常 更新 我知道我可以做[在Matlab中]这样的事情: >>

我有50个具有此结构的.csv文件:

value1,value2,...
一个单独的长行,每个值用逗号分隔

具体来说,它们是浮点数,每个csv都有不同数量的值

0.0023593,0.0062565,0.00723753,0.0023353,0.0052353,0.0024353,...
我必须在同一个图表中绘制每个数据文件,以找到这些值的趋势,可能还有一个平均图

如何以简单的方式完成此操作?首选Matlab,但R正常

更新 我知道我可以做[在Matlab中]这样的事情:

>> arr1 = csvread('file1.csv');
>> plot(arr1)

…但我正在寻找一种程序化的方法

更新2 谢谢你的回答,我做了一个简单的破解,最终得到了正确的解决方案,但这是一个破解。我刚刚使用python复制了这些命令,然后我运行了所有这些命令

@Crowley您的解决方案可能是正确的,但不幸的是存在一些语法问题

@感谢你的努力!但这不是我需要的,也许我的结果可以帮助你开发R代码,那么我一定会推荐你的答案为正确答案

结果如下:


用这个“愚蠢的”

假设我们在
YourFolder='which\address\'
文件夹中有数据,那么如果我们想要
double
数组:

Files=dir(['YourFolder' .*']);  % look for csv. files in the folder
[M,~]=size(Files);           % count them
AllData=zeros(M,0);

for ii=1:M
  Temp=importdata([YourFolder,Files(ii).name '.csv'],','); % Read csv file into a structure
  Temp=Temp.data;   & Use only the data part
  if size(Temp,2>size(AllData,2)  %compare 2. dimensions of AllData and Temp
    % if Temp is wider, then append NaN values to AllData to match widths
    n=size(Temp,2)-size(AllData,2);
    Refill=nan(M,n);
    AllData=[AllData,Refill];
  elseif size(Temp,2<size(AllData,2)
    % If AllData is wider then append NaN values to Temp to match widths
    n=size(AllData,2)-size(Temp,2);
    Refill=nan(1,n);
    Temp=[Temp,Refill];
  end
  % append new line to AllData
  AllData(ii,:)=Temp;
end

plot(AllData') % Alldata shall be transposed because plot uses columns as data sets by default.

假设我们在
YourFolder='which\address\'
文件夹中有数据,那么如果我们想要
double
数组:

Files=dir(['YourFolder' .*']);  % look for csv. files in the folder
[M,~]=size(Files);           % count them
AllData=zeros(M,0);

for ii=1:M
  Temp=importdata([YourFolder,Files(ii).name '.csv'],','); % Read csv file into a structure
  Temp=Temp.data;   & Use only the data part
  if size(Temp,2>size(AllData,2)  %compare 2. dimensions of AllData and Temp
    % if Temp is wider, then append NaN values to AllData to match widths
    n=size(Temp,2)-size(AllData,2);
    Refill=nan(M,n);
    AllData=[AllData,Refill];
  elseif size(Temp,2<size(AllData,2)
    % If AllData is wider then append NaN values to Temp to match widths
    n=size(AllData,2)-size(Temp,2);
    Refill=nan(1,n);
    Temp=[Temp,Refill];
  end
  % append new line to AllData
  AllData(ii,:)=Temp;
end

plot(AllData') % Alldata shall be transposed because plot uses columns as data sets by default.

恐怕我不懂任何MATLAB,但在R中实现这一点的一种方法是使用ggplot2包。它的工作原理是在绘图中添加不同的图层,这使它成为使用不同数据帧的方便方式

首先,我生成了一些要使用的示例数据

a <- data.frame(runif(100))
b <- data.frame(runif(150))
c <- data.frame(runif(125))

names(a) <- 'y'
names(b) <- 'y'
names(c) <- 'y'


se=FALSE
会阻止它在背景中将标准误差显示为灰色带。如果标准误差对您有帮助,您可以忽略它。

恐怕我不懂任何MATLAB,但在R中实现这一点的一种方法是使用ggplot2软件包。它的工作原理是在绘图中添加不同的图层,这使它成为使用不同数据帧的方便方式

首先,我生成了一些要使用的示例数据

a <- data.frame(runif(100))
b <- data.frame(runif(150))
c <- data.frame(runif(125))

names(a) <- 'y'
names(b) <- 'y'
names(c) <- 'y'


se=FALSE
会阻止它在背景中将标准误差显示为灰色带。如果标准错误对您有帮助,您可以忽略它。

文件名如何,它们是否在同一文件夹中?将数据输入到程序中可能是关键,对吗?名称是sudoku1_EUC.csv sudoku2_EUC.csv。。。sudoku50_EUC.csv。问题是,我对这两个框架几乎一无所知。这听起来像是一个基本的循环任务,读取文件,然后生成一些漂亮的图形,其中图例的各个方面可以解释各种文件。你能考虑通过提供一些与你的真实数据相似的内容来复制示例吗?为什么不给我们展示你所尝试的东西,选择一个语言OK,Sudok00Eu.CSV:SudoKu1Eu.CSV:SudoKu15O.Eu.CSV:@ RAWR,因为我告诉过你,我对框架没有任何了解。我注意到,您可以通过一次调用将csv收集到一个数组中,但我不想手动完成。我问的是一个程序性的问题,我不知道。文件名如何,它们在同一个文件夹中吗?将数据输入到程序中可能是关键,对吗?名称是sudoku1_EUC.csv sudoku2_EUC.csv。。。sudoku50_EUC.csv。问题是,我对这两个框架几乎一无所知。这听起来像是一个基本的循环任务,读取文件,然后生成一些漂亮的图形,其中图例的各个方面可以解释各种文件。你能考虑通过提供一些与你的真实数据相似的内容来复制示例吗?为什么不给我们展示你所尝试的东西,选择一个语言OK,Sudok00Eu.CSV:SudoKu1Eu.CSV:SudoKu15O.Eu.CSV:@ RAWR,因为我告诉过你,我对框架没有任何了解。我注意到,您可以通过一次调用将csv收集到一个数组中,但我不想手动完成。我在问一个我不知道的程序方法。@rawr我已经加载了ggplot 2.0.0。看起来它们现在达到了2.1.0。您的编辑修复了它,thanks@rawr可能是我将列命名为“a”、“b”和“c”。让我知道它现在是否工作。@rawr我已经加载了ggplot 2.0.0。看起来它们现在达到了2.1.0。您的编辑修复了它,thanks@rawr可能是我将列命名为“a”、“b”和“c”。让我知道它现在是否有效。
p <- ggplot()
p <- p + geom_boxplot(data=a, aes(y=y, x=1, color='a'))
p <- p + geom_boxplot(data=b, aes(y=y, x=2, color='b'))
p <- p + geom_boxplot(data=c, aes(y=y, x=3, color='c'))
p         # to show the plot
p <- ggplot() + geom_boxplot(data=a, aes(y=y, x=1, color='a')) + geom_boxplot(data=b, aes(y=y, x=2, color='b')) + geom_boxplot(data=c, aes(y=y, x=3, color='c'))
p         # to show the plot
q <- ggplot()
q <- q + geom_point(data=a, aes(y=y, x=1:dim(a)[1], color='a'))
q <- q + geom_point(data=b, aes(y=y, x=1:dim(b)[1], color='b'))
q <- q + geom_point(data=c, aes(y=y, x=1:dim(c)[1], color='c'))
q
q <- ggplot() + geom_point(data=a, aes(y=y, x=1:dim(a)[1], color='a')) + geom_point(data=b, aes(y=y, x=1:dim(b)[1], color='b')) + geom_point(data=c, aes(y=y, x=1:dim(c)[1], color='c'))
q
a <- data.frame(runif(100)-(1:100)/300)
b <- data.frame(runif(150)-(1:150)/300)
c <- data.frame(runif(125)-(1:125)/300)
names(a) <- 'y'
names(b) <- 'y'
names(c) <- 'y'
r <- ggplot()
r <- r + geom_smooth(data=a, aes(y=y, x=1:dim(a)[1], color='a'), se=FALSE)
r <- r + geom_smooth(data=b, aes(y=y, x=1:dim(b)[1], color='b'), se=FALSE)
r <- r + geom_smooth(data=c, aes(y=y, x=1:dim(c)[1], color='c'), se=FALSE)
r