gnuplot“跳过没有有效点的数据文件”

时间:2018-08-08 06:48:03

标签: gnuplot

我想使用行堆叠直方图绘制数据,并将数据与gnuplot命令放在同一文件中。 我在其他任何地方都找不到相同的问题,并且尝试了很多想法,但都没有成功。

样本数据文件,我称之为example.dat

Name    March   April   May
Bob     5       10      30
Alice   20      5       20
Tony    10      10      15
Cathy   15      15      10

这是一个gnuplot命令文件,我称之为eg1.gp:

set title "Test chart for row stacked histogram" 
set style data histograms
set style histogram rowstacked
set boxwidth 0.6
set style fill solid 1.0 border -1
set key invert autotitle columnhead
set yrange [:50]
set ylabel "Number of Referrals"
set ytics 10
plot 'example.dat' using 2 t "March", '' using 3 t "April", '' using 4:xtic(1) t "May"

我正在使用Linux Manjaro。 当我发出命令$:gnuplot -persist eg1.gp时,我得到了如下所示的预期图表: Stacked histogram eg1.png

到目前为止,一切都很好。直方图有4个竖线,每个竖线都有3种颜色,分别代表每个名称的月份。

接下来,我将两个文件合并为一个文件,调整命令以使用文件中的数据。在这里:

set title "Test chart for row stacked histogram" 
set style data histograms
set style histogram rowstacked
set boxwidth 0.6
set style fill solid 1.0 border -1
set key invert autotitle columnhead
set yrange [:50]
set ylabel "Number of Referrals"
set ytics 10

plot "-" using 2 t "March", '' using 3 t "April", '' using 4:xtic(1) t "May"
Name    March   April   May
Bob     5       10      30
Alice   20      5       20
Tony    10      10      15
Cathy   15      15      10

此文件与前两个文件的组合相同,只是命令中的文件引用“ example.dat”已替换为“-”,这告诉gnuplot查找紧随其后的数据(在哪里)。 我将此文件另存为eg2.gp并发出命令$:gnuplot -persist eg2.gp 结果是数据文件第二列的图表-即仅March数据,外加2条警告消息,均显示“ eg2.gp”,第16行:警告:跳过没有有效点的数据文件” 。 这是新图像: stacked histogram eg2.png

x轴上的名称已丢失。 eg2.gp文件中的第16行是数据的最后一行。 我认为发生的是,当gnuplot开始在直方图中构建第二行框时,它无法循环回到文件数据部分的开头。 问题是,如何指示gnuplot做到这一点?

1 个答案:

答案 0 :(得分:0)

您不能多次从stdin("-")中读取相同的数据。您需要根据需要重复数据多次,并用e隔开一行。

从5.0版开始,gnuplot具有数据块,可让您多次使用内联数据:

$data <<EOD
Name    March   April   May
Bob     5       10      30
Alice   20      5       20
Tony    10      10      15
Cathy   15      15      10
EOD

set title "Test chart for row stacked histogram" 
set style data histograms
set style histogram rowstacked
set boxwidth 0.6
set style fill solid 1.0 border -1
set key invert autotitle columnhead
set yrange [:50]
set ylabel "Number of Referrals"
set ytics 10

plot $data using 2, '' using 3, '' using 4:xtic(1)

您无需指定显式标题。使用set key autotitle columnhead可以从数据中读取标题。