3

我刚开始使用 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 文件,但我总是得到一些完全不同的东西。

也许有人有提示或可以帮助我的东西?

非常感谢你,

最好的问候凯文

4

2 回答 2

3

正如 Christoph 所指出的,您需要在绘图之前转置数据,这里的答案应该对此有所帮助。要确定数据中的行数,最新版本的 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

我使用wccoreutils 来计算行数,并transpose按照flysheep的建议来处理换位。

结果:

对具有更多图和数据点的数据运行相同的脚本:

数据2.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

于 2014-03-17T10:29:40.170 回答
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):

在此处输入图像描述

于 2014-03-16T21:44:59.233 回答