【问题标题】:Color bars in different colors for some specific values in GnuplotGnuplot 中某些特定值的不同颜色的颜色条
【发布时间】:2013-04-04 10:11:03
【问题描述】:

我正在使用 Gnuplot 生成直方图,但如果值高于/低于特定值,我需要将其中一些用另一种颜色着色。例如,如果值 10,值 20,则将直方图着色为红色。

所以我希望图表是这样的:

x颜色

1 . 4.绿色

2 。 15 .黄色

3 . 40 .红色

值(x 和 y)来自数据库,因此我无法告诉 Gnuplot 我要着色哪些 x 值,因为这些值会不时变化。

我能用 Gnuplot(和 php)完成这个吗?

谢谢!

【问题讨论】:

    标签: php graph gnuplot


    【解决方案1】:

    您可以使用以下 gnuplot 脚本:

    set style fill transparent solid 0.5 noborder
    set boxwidth 0.95 relative
    set palette model RGB defined (0 "green", 1 "yellow", 2 "red")
    plot 'path\to\your\file' using 1:2:($2<=10 ? 0 : $2<=20 ? 1 : 2) with boxes palette
    

    我的测试文件的内容是

    1 4
    2 15
    3 40
    

    我得到的结果是

    【讨论】:

    • @mgilson 是的,我试过了,你可以在 imgur.com/6ZsnvVt 看到我的结果。我使用了OP的数据。我的系统是Win7,Gnuplot 4.6
    • 没错!我应该在我的另一台机器上试过这个。在我的笔记本电脑上,我仍然使用 gnuplot4.4 作为默认安装(即使我也有 4.6 可以玩)。在这种情况下,我什至会投票
    • 作为旁注,这激发了我提交feature request
    • @mgilson 感谢您提供功能请求信息。我一定会跟进进展。是否可以对此进行投票?
    • 感谢您的帮助!做了一个类似的方法: plot 'file.dat' using 1:($3>=20 ? $3 : NaN) with boxes lc rgb "red", 'file.dat' using 1:($3
    【解决方案2】:

    鉴于此数据文件:

    1 4  green
    2 15 yellow
    3 40 red
    

    以下行有效:

    plot for [color in "green red yellow"] 'test.dat' using 1:(strcol(3) eq color ? $2:NaN):(0.95) with boxes lc rgb color
    

    【讨论】:

    • 我对您的代码有一个小的改进:在当前形式中,框没有用第三列中的正确颜色着色,但应该是绿色的是红色,应该是什么黄色是蓝色,应该是红色的是绿色:)。您可以通过在代码行末尾添加lc rgb color 来更改适当的颜色。
    • @halex -- 是的,这就是我一直想做的事情……看来我在测试中没有注意。谢谢。
    • 最后我也给你一个 +1 的不同方法,因为不清楚 OP 是否将颜色作为第三列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多