2

私は4つの異なるデータファイル(季節用)を持っており、すでに中央値などで箱ひげ図を作成することができました.

でも今はシンプルなラインで四季の展開を見せたいと思います。gnuplot で 4 つの季節の中央値 (および四分位数または標準偏差) をプロットし、それらを線分で結び付けたいと考えています。

値は、1 つの列の 4 つの個別のデータ ファイルにあります。各列には、1 つの中央値 (および四分位数...) があります。また、最初のいくつかのエントリを無視したいと思います。

コマンドを試しました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経験豊富なユーザーにとって解決策は非常に簡単かもしれませんが、さまざまなことを試しましたが、何も機能しませんでした。

前もって感謝します!

4

1 に答える 1

0

You use the wrong syntax for the stats command (would have been helpful if you had provided the error message). You must use name, the rest is convenience:

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_"

The plotting part is a bit tricky:

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 ''

Rough explanation of the script: Usually gnuplot can connect points with lines only when they appear in the same data file.

To simulate that, I use the special file name +, which generates a number of samples in the specified range (the xrange must be set in order to use +). I use four samples (set samples 4), the number of the current sample can be accessed with $0 (or column(0)) in the using statement. The sample number goes from 0 to 3.

quartil holds four words, which are extracted later to construct the variable name. The first word has the index 1, therefore I use word(quartil, $0+1).

If a variable name is known as string, its value can be accessed by value(string).

The result with the test data is: enter image description here

于 2013-08-08T12:46:19.593 に答える