【问题标题】:gnuplot: add extra keysgnuplot:添加额外的键
【发布时间】:2015-02-27 13:13:47
【问题描述】:

我有一个简单的 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 个代表点来发布 img,所以这些是 imgur 链接到: what I getwhat I want

提前致谢

【问题讨论】:

    标签: key gnuplot histogram legend


    【解决方案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 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
    

    【讨论】:

    • 感谢您的回答 Miguel,它很聪明!但是,是否有可能完成与我的示例中一样避免“永远”循环并坚持使用颜色定义的相同任务?再次感谢
    • 您需要为每个图例标题绘制一次,因此即使在 plot 命令中将循环替换为 3 个显式项,您也需要 every
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多