GnuPlot:每条CSV线绘制线条

时间:2014-03-16 14:44:21

标签: csv plot gnuplot dynamic-columns

我刚刚开始使用Gnu Plot,我创建了一些简单的图。但现在我遇到了一个新问题。

输入是这样的csv文件:

name;n0;n1;n2
Benj;1;3;2
Silv;6;1;2
Steffi;3;2;2

列数和行数是动态的。所以这也是一个有效的输入文件:

name;n0;n1;n2;n3;n4
Benj;2;2;3;2;1

我喜欢这样的图表(输入是第一个csv): enter image description here

我玩过一些我之前创建的Gnu Plot文件,但我总是得到一些完全不同的东西。

也许某人有提示或某事要帮助我?

非常感谢,

祝你好运 凯文

2 个答案:

答案 0 :(得分:3)

正如Christoph所说,你需要在绘图之前转置数据,answers here应该对此有所帮助。要确定数据中的行数,最新版本的Gnuplot可以使用stats命令(请参阅下面的Christoph评论),否则需要通过其他方式计算行数。

以下是如何处理外部程序的两个问题:

dfile = "data.csv"
nrec  = system("wc -l < " . dfile)
set datafile separator ';'
plot for [i=2:nrec] '<transpose --fsep \; -t '.dfile using i:xtic(1) with lines title columnhead

我使用coreutils中的wc来计算flyingsheep建议的行数和transpose来处理转置。

结果:

对包含更多绘图和数据点的数据运行相同的脚本:

data2.csv

name;n0;n1;n2;n3;n4
Benj;1;3;2;5;3
Silv;6;1;2;3;4
Steffi;3;2;2;4;2
Carl;2;4;5;3;2

答案 1 :(得分:0)

这是gnuplot的错误数据文件格式。通常,对于单个图,gnuplot将所有行用于单个列。使用像

这样的数据文件
name;Benj;Silv;Steffi
n0;1;6;3
n1;3;1;2
n2;2;2;2

情节变得如

一样简单
set datafile separator ";"
set style data lines
set key autotitle columnhead
plot 'data.csv' using 2:xtic(1), '' using 3, '' using 4

结果(使用4.6.3):

enter image description here

相关问题