gnuplot 条件填充颜色
gnuplot conditional fill color
gnuplot 新手。可能是一个简单的问题,但感谢帮助。
我正在绘制一个堆叠直方图,每个类别有 5 个部分(来自文件的第 3-7 列)。根据第二列数据(0 或 1)中的变量,各部分的颜色要么是黑色、绿色、黄色、洋红色、红色,要么分别是红色、洋红色、黄色、绿色、黑色。我一直在尝试对这项工作进行修改:
plot 'themesdat.txt' u 3 not lt rgb (?0xff5050:0x808080),\
'' u 4 not lt rgb (?0x966496:0x00ff66),\
'' u 5 not lt rgb 0xffff00,\
'' u 6 not lt rgb (?0x00ff66:0x966496"),\
'' u 7 :xticlabels(1) not lt rgb (?0x808080:0xff5050)
条件产生未定义值错误。正如我所说,可能是一个简单的问题,但我被卡住了!
编辑:数据文件样本(前 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),似乎也不起作用。
如果有人不知道...?
如果我没理解错的话,你可以试试, for example 中的一种方法。在那里你也可以找到解释。
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(, 3), 0) notitle, \
"" every ::i::i u 3 ls style title "severe problems", \
"" every ::i::i u (style = color(, 4), 0) notitle, \
"" every ::i::i u 4 ls style title "probs", \
"" every ::i::i u (style = color(, 5), 0) notitle, \
"" every ::i::i u 5 ls style title " ", \
"" every ::i::i u (style = color(, 6), 0) notitle, \
"" every ::i::i u 6 ls style title "help?", \
"" every ::i::i u (style = color(, 7), 0) notitle, \
"" every ::i::i u 7 ls style title "fine"
}
unset multiplot
这是结果:
gnuplot 新手。可能是一个简单的问题,但感谢帮助。
我正在绘制一个堆叠直方图,每个类别有 5 个部分(来自文件的第 3-7 列)。根据第二列数据(0 或 1)中的变量,各部分的颜色要么是黑色、绿色、黄色、洋红色、红色,要么分别是红色、洋红色、黄色、绿色、黑色。我一直在尝试对这项工作进行修改:
plot 'themesdat.txt' u 3 not lt rgb (?0xff5050:0x808080),\
'' u 4 not lt rgb (?0x966496:0x00ff66),\
'' u 5 not lt rgb 0xffff00,\
'' u 6 not lt rgb (?0x00ff66:0x966496"),\
'' u 7 :xticlabels(1) not lt rgb (?0x808080:0xff5050)
条件产生未定义值错误。正如我所说,可能是一个简单的问题,但我被卡住了!
编辑:数据文件样本(前 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),似乎也不起作用。
如果有人不知道...?
如果我没理解错的话,你可以试试
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(, 3), 0) notitle, \
"" every ::i::i u 3 ls style title "severe problems", \
"" every ::i::i u (style = color(, 4), 0) notitle, \
"" every ::i::i u 4 ls style title "probs", \
"" every ::i::i u (style = color(, 5), 0) notitle, \
"" every ::i::i u 5 ls style title " ", \
"" every ::i::i u (style = color(, 6), 0) notitle, \
"" every ::i::i u 6 ls style title "help?", \
"" every ::i::i u (style = color(, 7), 0) notitle, \
"" every ::i::i u 7 ls style title "fine"
}
unset multiplot
这是结果: