绘制不同数据文件的中间值(使用gnuplot)

时间:2013-08-08 12:11:27

标签: graph plot statistics gnuplot

我有4个不同的数据文件(适用于季节),并且已经设法用中位数和东西制作箱形图。

但是现在我想通过简单的线条来展示季节的发展。 我希望gnuplot绘制4个季节的中值(可能是四分之一或标准偏差)并通过线点连接它们。

值在一列中的4个单独的数据文件中 - 每列有一个中位数(和四分之一......)。我也想忽略前几个条目。

我已经尝试过命令stats,但我总是在这里遇到错误:

stats 'VARIANTE 1\Habitate\Äschen\Vergleich\FRU\WUA_Vergleich.dat' u 2 every ::5 label  "Ist_FRU"
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\SOM\WUA_Vergleich.dat' u 2 every ::5 label "Ist_SOM"
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\HER\WUA_Vergleich.dat' u 2 every ::5 label "Ist_HER"
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\WIN\WUA_Vergleich.dat' u 2 every ::5 label "Ist_WIN"

我在这里定义了特殊xtics

set xtics ("Fru" 1, "Som" 2, "Her" 3, "Win" 4) scale 0.0  out font ",9"

后来想要绘制这些数据:

plot \
 (1):median_Ist_FRU notitle linestyle 1, \
 (2):median_Ist_SOM notitle linestyle 1, \
 (3):median_Ist_HER notitle linestyle 1, \
 (4):median_Ist_WIN notitle linestyle 1 

我想我不能正确理解命令statsplot,对于有经验的用户来说解决方案可能非常简单 - 但我尝试了很多不同的东西而且没有任何效果。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您对stats命令使用了错误的语法(如果您提供了错误消息,则会有所帮助)。您必须使用name,其余的是方便:

tmpl = 'VARIANTE 1\Habitate\Äschen\Vergleich\%s\WUA_Vergleich.dat'
stats sprintf(tmpl, "FRU") u 2 every ::5 name "Ist_FRU_"
stats sprintf(tmpl, "SOM") u 2 every ::5 name "Ist_SOM_"
stats sprintf(tmpl, "HER") u 2 every ::5 name "Ist_HER_"
stats sprintf(tmpl, "WIN") u 2 every ::5 name "Ist_WIN_"

绘图部分有点棘手:

reset
# these are some test values
Ist_FRU_median = 1
Ist_SOM_median = 0.5
Ist_HER_median = 1.5
Ist_WIN_median = 1.2

set xtics ("Fru" 1, "Som" 2, "Her" 3, "Win" 4) scale 0.0
quartil="FRU SOM HER WIN"
set samples 4
set xrange[0.8:4.2]
plot '+' using ($0+1):(value('Ist_'.word(quartil, int($0+1)).'_median')) with linespoints title ''

脚本的粗略解释:通常gnuplot只有在出现在同一数据文件中时才能将点连接到行。

为了模拟这一点,我使用特殊文件名+,它会在指定范围内生成许多样本(必须设置xrange才能使用+)。我使用了四个样本(set samples 4),可以使用using语句中的$ 0(或列(0))访问当前样本的数量。样本编号从03

quartil包含四个单词,稍后会提取这些单词以构造变量名称。第一个单词的索引为1,因此我使用word(quartil, $0+1)

如果变量名称称为字符串,则value(string)可以访问其值。

测试数据的结果是: enter image description here