我有一个简单的gnuplot脚本来绘制具有不同颜色条形的直方图,每种颜色代表一个组。
如何显示3个不同的键(1个红色,1个绿色和1个蓝色)?
这是我的剧本:
unset title
set key left
set yrange [0:10]
set ylabel 'Score'
set xtics rotate out
set style histogram gap 1
set style data histogram
set style fill solid 1.00 border 0
set linetype 1 lc rgb 'red'
set linetype 2 lc rgb 'red'
set linetype 3 lc rgb 'red'
set linetype 4 lc rgb 'green'
set linetype 5 lc rgb 'green'
set linetype 6 lc rgb 'green'
set linetype 7 lc rgb 'blue'
set linetype 8 lc rgb 'blue'
set linetype 9 lc rgb 'blue'
set xtics nomirror
set ytics nomirror
plot 'example.dat' using ($0):2:($0+1):xtic(1) with boxes linecolor variable notitle
这里是我的example.dat文件:
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
I 9
我没有10个回复点来发布imgs,所以这些是imgur链接到: what I get和what I want
提前致谢
答案 0 :(得分:2)
忘记手动定义所有这些样式并在循环中工作:
unset title
set key left
set yrange [0:10]
set ylabel 'Score'
set xtics rotate out
set style histogram gap 1
set style data histogram
set style fill solid 1.00 border 0
set xtics nomirror
set ytics nomirror
plot for [i=1:3] 'example.dat' \
every ::((i-1)*3)::((i-1)*3+2) using ($0+i*3):2:xtic(1) \
with boxes linecolor i title "Gpr".i
上面的代码从1到3循环,每次都绘制一个组。 every
选择要绘制的点,标题以字符串连接的形式获得。线条颜色从1到3简单地选择为i
,但您可以使用复杂的条件表达式:
f(x)=(x == 1 ? "magenta" : x == 2 ? "yellow" : "cyan")
plot for [i=1:3] 'example.dat' \
every ::((i-1)*3)::((i-1)*3+2) using ($0+i*3):2:xtic(1) \
with boxes linecolor rgb f(i) title "Gpr".i