我刚刚开始使用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):
我玩过一些我之前创建的Gnu Plot文件,但我总是得到一些完全不同的东西。
也许某人有提示或某事要帮助我?
非常感谢,
祝你好运 凯文
答案 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):