2

我有 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 

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

提前致谢!

4

1 回答 1

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(或 column(0))访问。样本编号从03

quartil包含四个单词,稍后将其提取以构造变量名称。第一个词有索引1,所以我用word(quartil, $0+1).

如果一个变量名被称为字符串,它的值可以被value(string).

测试数据的结果是: 在此处输入图像描述

于 2013-08-08T12:46:19.593 回答