タイトルはかなり自明ですが、ここに私がやりたいことの写真があります。それが可能かどうかを判断するのに苦労しています。
借用したプロット: 硫化物鉱山周辺の地球化学的バックグラウンド レベルの評価 - ビーンプロットを使用した新しい統計手順。グスタバソン等。2012年。
タイトルはかなり自明ですが、ここに私がやりたいことの写真があります。それが可能かどうかを判断するのに苦労しています。
借用したプロット: 硫化物鉱山周辺の地球化学的バックグラウンド レベルの評価 - ビーンプロットを使用した新しい統計手順。グスタバソン等。2012年。
プロットを正確にこの向きで行うことは、可能であれば非常に面倒です。
私の提案は、すべてを通常の向きでプロットし(つまり、「堆積物」軸をx
-軸、または-軸としてx2
)、すべてのラベルを少し回転させ、最後に完全な出力を90
度ごとに回転させることです(例などのpdfファイルpdftk
)。
これにより、通常どおり任意のプロット スタイルを使用できます。以下のスクリプトでは、2 つの異なるデータ セットに対して (疑似データを使用して) 紫と黄色で塗りつぶされた曲線をプロットする方法を示しています。boxes
他のピークを追加するのは簡単です (egまたはvector
plotting スタイルでバーをプロットします)。
異なるプロットを区別するために、特定の値を特定のプロットytics
に関連付けました, , ..., )。y
1=Water
4=Gyttja
すべてをまとめると、次のスクリプトが得られます。
reset
set terminal pdfcairo linewidth 2
outfile='bean'
set output outfile.'.pdf'
set encoding utf8
set x2range [0.5:9000]
set logscale x2
set x2tics (1, 5, 10, 50, '' 100, 500, '' 1000, 5000) out
set x2label 'mg/kg (sediments), µg/L (water)'
unset xtics
set yrange[0.5:4.5]
set ytics ('Water' 1, 'Minerogenic' 2, 'Peat' 3, 'Gyttja' 4) center rotate by -90 out
set label at graph 0.95, graph 0.05 right rotate by -90 'Nickel' font ',20' front
# cover possible data overlapping with the label
set object rectangle from graph 0.9, graph 0 to graph 1,graph 0.2 fillcolor rgb 'white' fillstyle solid noborder front
unset key
set macros
fs1="fillcolor rgb '#fc9e00' linewidth 2 fillstyle solid border lt -1"
fs2="fillcolor rgb '#9119f7' linewidth 2 fillstyle solid border lt -1"
# use pseudo data
set samples 500
plot '+' using 1:(4-0.3*exp(-(($1-10)/5.0)**4)) axes x2y1 with filledcurves y1=4 @fs1,\
'' using 1:(4+0.2*exp(-(($1-70)/50.0)**4)) axes x2y1 with filledcurves y1=4 @fs2,\
'' using 1:(1-0.4*exp(-(($1-5)/2.0)**2)) axes x2y1 with filledcurves y1=1 @fs1,\
'' using 1:(1+0.1*exp(-(($1-30)/20.0)**2)) axes x2y1 with filledcurves y1=1 @fs2
set output
system(sprintf('pdftk %s.pdf cat 1W output %s-rot.pdf', outfile, outfile))
system(sprintf('pdftocairo -r 150 -png %s-rot.pdf', outfile))
これにより、4.6.3 で (従来の出力と回転された出力を並べて表示) が得られます。
擬似データにはいくつかのものが必要です。実際のデータ ファイルの場合、プロット ラインは少し異なります。異なるプロットには1
in方向の分離があるy
ため、それに応じてデータをスケーリングする必要があります (ここではスケーリング係数を使用して手動で行いますsc
)。
sc = 5.1
plot 'datafile.txt' using 1:(4 + $2/sc) axes x2y1 with filledcurves y1=4 @fs1
もちろん、コマンドを使用していくつかの最小値/最大値を抽出することにより、スケーリングを自動的に行うこともできますstats
。