私は現在、行積み上げヒストグラムでgnuplotを使用していくつかのデータをプロットしています。問題は、9 つの異なる色が選択された後、色が繰り返され始めることです。これは公式の gnuplot の例でも見られます ( http://gnuplot.sourceforge.net/demo/histograms.html - 例 4 & 5 を参照) 。
gnuplot にもっと異なる色を使うように指示する方法はありますか?
私は現在、行積み上げヒストグラムでgnuplotを使用していくつかのデータをプロットしています。問題は、9 つの異なる色が選択された後、色が繰り返され始めることです。これは公式の gnuplot の例でも見られます ( http://gnuplot.sourceforge.net/demo/histograms.html - 例 4 & 5 を参照) 。
gnuplot にもっと異なる色を使うように指示する方法はありますか?
これを完全に自動化する方法はありませんが、必要な数の線スタイルを定義してset style line ...
使用することができます。ここでは、単純な繰り返しを使用していくつかの色を定義しています。
do for [i=1:20] {
set style line i linecolor rgb hsv2rgb(0.05*(i-1), 1, 1)
}
set style data histograms
set style histogram rowstacked
set style fill solid border -1
set boxwidth 0.75
plot for [i=1:20] 'mydata.dat' u 2 ls i t 'ls '.i
データファイルには値のみが含まれています
1 0.1
2 0.2
3 0.3
このhsv2rgb
関数は 5.0 以降でのみ定義されていることに注意してください。以前のバージョンでは、次のユーザー定義関数を使用して同じ機能を取得できます。
rgb2int(r,g,b) = int(255*r)*2**16 + int(255*g)*2**8 + int(255*b)
hsv2rgb(h,s,v) = (s == 0 ? rgb2int(v,v,v) : (HSV_h = h*6.0, HSV_i = int(floor(HSV_h)), HSV_f = HSV_h - HSV_i, HSV_p = v*(1.0 - s), HSV_q = v*(1.0-s*HSV_f), HSV_t = v*(1.0-s*(1.0-HSV_f)), (HSV_i%6 == 0 ? rgb2int(v,HSV_t,HSV_p) : (HSV_i%6 == 1 ? rgb2int(HSV_q,v,HSV_p) : (HSV_i%6 == 2 ? rgb2int(HSV_p,v,HSV_t) : (HSV_i%6 == 3 ? rgb2int(HSV_p,HSV_q,v) : (HSV_i%6 == 4 ? rgb2int(HSV_t,HSV_p,v) : rgb2int(v,HSV_p,HSV_q))))))))
簡単にするために、このコードを構成ファイルまたは 3 番目のスクリプトに入れて、関数を使用する前にhsv2rgb.gp
含めることができます。load 'hsv2rgb.gp'
4.6.3 の出力は次のとおりです。
クリストフの答えよりももう少し自動化されたものがあります。カラー パレットを使用できます。
set palette rgb 7,5,15
unset colorbox
plot 'immigration.dat' using 2:xtic(1) title columnheader(2), \
for [i=3:22] '' using i lt palette frac i/22. title columnheader(i)
トリックは、frac
ループ カウンターに基づいて定義することi
です。カラー パレットの適切な分数を取得するには、 float
(この場合は例に一致するように) で割ってください。
または、たとえば 4: 22.
plot 'immigration.dat' using (100.*$2/$24):xtic(1) t column(2), \
for [i=3:23] '' using (100.*column(i)/column(24)) lt palette frac i/23.\
title column(i)
あとは、適切なカラー パレットを決定するだけです。