我有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
,对于有经验的用户来说解决方案可能非常简单 - 但我尝试了很多不同的东西而且没有任何效果。
提前致谢!
答案 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))访问当前样本的数量。样本编号从0
到3
。
quartil
包含四个单词,稍后会提取这些单词以构造变量名称。第一个单词的索引为1
,因此我使用word(quartil, $0+1)
。
如果变量名称称为字符串,则value(string)
可以访问其值。
测试数据的结果是: