2017-02-27 102 views
2

gnuplotの新機能。おそらく簡単な質問ですが、助けに感謝します。gnuplot条件付き塗りつぶしの色

私は、各カテゴリ(ファイルの3〜7列目)に5つのセクションを含む積み重ねられたヒストグラムをプロットしています。データの2番目の列(0または1)の変数に応じて、セクションの色は黒、緑、黄、マゼンタ、赤、またはそれぞれ赤、マゼンタ、黄、緑、黒のいずれかです。

plot 'themesdat.txt' u 3 not lt rgb ($2?0xff5050:0x808080),\ 
'' u 4 not lt rgb ($2?0x966496:0x00ff66),\ 
'' u 5 not lt rgb 0xffff00,\ 
'' u 6 not lt rgb ($2?0x00ff66:0x966496"),\ 
'' u 7 :xticlabels(1) not lt rgb ($2?0x808080:0xff5050) 

条件付きでは、定義されていない値のエラーが生成されます。私が言うように、おそらくv単純な問題ですが、私は立ち往生しています!

編集:データファイルのサンプル(上位6行): -

#title band1, band2, band3, band4, band5, labelx, label1, ... label5 
#band colours: ff5050¸966496, ffff00, 00ff66, 808080 (reversed for 1,7,8,11,12,16,7,18,19) 
Satisfaction 1 43 15 0 16 26 0 "severe problems" probs " " help? fine 
Frustration 0 42 11 18 0 29 1 fine help problems "" "severe problems" 
CopingAbility 1 47 13 7 11 22 2 "severe problems" probs " " help? fine 
Category 1 0 0 0 0 0 3 "" "" "" "" "" 

さらに編集:私は、これは不可能かもしれ思っています - 色を変化させるために、データファイルから列を使用します。よりシンプルな構成のrgb($ 2)でも動作するようには見えません。

他に誰かが知っていれば...?

+0

あなたは、データ・ファイル(の小さなサブセット)を提供するだろうか? – bibi

+0

はい、ビビ。質問に追加されました。ありがとうmaij。 – Pansmanser

答えて

0

私が正しく理解していれば、のようなアプローチの1つをthis questionから試すことができます。そこにも説明があります。

set terminal pngcairo size 960,600 
set output "conditional_fill.png" 

datafile="themesdat.txt" 
set yrange [0:100] 

set key out 
set style data histograms 
set style histogram rowstacked 
set boxwidth 0.8 relative 
set style fill solid 1.0 border -1 

set style line 3 lt 1 lc rgb "black" 
set style line 4 lt 1 lc rgb "green" 
set style line 5 lt 1 lc rgb "yellow" 
set style line 6 lt 1 lc rgb "magenta" 
set style line 7 lt 1 lc rgb "red" 

set style line 13 lt 1 lc rgb "red" 
set style line 14 lt 1 lc rgb "magenta" 
set style line 15 lt 1 lc rgb "yellow" 
set style line 16 lt 1 lc rgb "green" 
set style line 17 lt 1 lc rgb "black" 

color(x,y) = 10*x + y 

stats datafile u 2 nooutput 
n = STATS_records 

set multiplot 
do for [i=0:n-1] { 
    plot datafile u (0):xticlabels(1) notitle,\ 
     newhistogram "" at i, \ 
       "" every ::i::i u (style = color($2, 3), 0) notitle, \ 
       "" every ::i::i u 3 ls style title "severe problems", \ 
       "" every ::i::i u (style = color($2, 4), 0) notitle, \ 
       "" every ::i::i u 4 ls style title "probs",   \ 
       "" every ::i::i u (style = color($2, 5), 0) notitle, \ 
       "" every ::i::i u 5 ls style title " ",    \ 
       "" every ::i::i u (style = color($2, 6), 0) notitle, \ 
       "" every ::i::i u 6 ls style title "help?",   \ 
       "" every ::i::i u (style = color($2, 7), 0) notitle, \ 
       "" every ::i::i u 7 ls style title "fine" 
} 
unset multiplot 

これが結果です:

histogram with colors from column

+0

それは賢いです! – Pansmanser

関連する問題