gnuplot:添加额外的密钥

时间:2015-02-27 13:13:47

标签: key gnuplot histogram legend

我有一个简单的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 getwhat I want

提前致谢

1 个答案:

答案 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

enter image description here

上面的代码从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

enter image description here