多个数据块,更改图标题

时间:2015-03-26 18:50:20

标签: gnuplot

我正在尝试使用csv文件构建图表。 它应该在内部有不确定数量的数据块。

我的CSV看起来像这样:

year;amount;NAME1
year;amount;NAME1
year;amount;NAME1

year;amount;NAME2
year;amount;NAME2
year;amount;NAME2

所以我希望我的图形有两条曲线(如果有更多的块,则更多),一条名为NAME1,另一条名为NAME2。 我想要检索名称的唯一方法是使用:

title columnhead(3)

但是通过使用它,我的csv的第一行丢失了,我无法理解为什么......

这是我的脚本生成图像

gnuplot <<EOF
set terminal png
set title "Stages par professeur par années"
set output "stages_entr_ann.png"
set auto x
set key on outside left bmargin
set datafile separator ";"
set xtics 1
set ytics 1
stats 'fichier3_t.stat'
plot for [IDX=0:STATS_blocks-1] 'fichier3_t.stat' index IDX u 1:2 title columnhead(3) with linespoints ls IDX
EOF

(有未知数量的块,所以我使用的是STATS_blocks)

1 个答案:

答案 0 :(得分:0)

关键是columnhead需要这样的事情:

Year  Amount  Name
2013   5000   John
2014   8000   Max
2015  12000   Susanne

即。每个列的第一行被视为标签,而不是数据。当gnuplot提取名称时,它会忽略该行的其余部分。

没有简单直接的解决方案,但您可以解决方法:

plot for [IDX=0:STATS_blocks-1] 'fichier3_t.stat' index IDX u 1:(1/0) title columnhead(3) with linespoints ls IDX, for [IDX=0:STATS_blocks-1] 'fichier3_t.stat' index IDX u 1:(1/0) notitle with linespoints ls IDX

更清楚地说明:

plot 'fichier3_t.stat' ... u 1:(1/0)   title columnhead(3) with linespoints ..., \
     'fichier3_t.stat' ... u 1:2     notitle               with linespoints ...

第一个命令与您的类似,它只是不绘制任何数据(因为1/0始终无效)。它只在那里生成图例(键)中的条目。 第二个命令绘制数据,但不在图例中生成任何条目。只需确保为两个图分配相同的线条样式。

如果表格很大且速度有问题,您也可以使用every作为标题生成命令,以减少它试图绘制的点数。

最后,您可能还会收到消息“xrange中没有有效数据”或类似信息。这是打算在这里,但不应该是一个问题。