【问题标题】:Gnuplot: Set palette colours for absolute valuesGnuplot:为绝对值设置调色板颜色
【发布时间】:2014-09-01 16:14:36
【问题描述】:

我使用带有调色板的splot 绘制了一个二维函数:

set zrange [0.5:1.5] 
set palette defined ( 0 "green", 1 "black", 2 "red" )
splot "HTSG_PeakPositions_thetaI080.gnuplot" using 3:1:5 title 'Relative Peak Positions' with pm3d

这在某种程度上有效;但是,我希望该图在值 1.0 处为黑色,并且如果它偏离该级别,则颜色适当。问题是调色板是相对于绘图中包含的最小值:最大值的范围定义的,而不是绝对值。 zrange 选项似乎不会影响这种行为。有没有办法创建绝对映射?

【问题讨论】:

    标签: mapping gnuplot palette


    【解决方案1】:

    颜色范围受set cbrange影响:

    set cbrange [0.5:1.5]
    set palette defined ( 0 "green", 1 "black", 2 "red" )
    splot "HTSG_PeakPositions_thetaI080.gnuplot" using 3:1:5 title 'Relative Peak Positions' with pm3d
    

    如果您想要某种与 1.0 对称的自动缩放,可以在绘图前使用stats 命令确定颜色范围:

    stats "HTSG_PeakPositions_thetaI080.gnuplot" using 5 nooutput
    cb_val = (abs(STATS_min - 1) < abs(STATS_max - 1) ? abs(STATS_max - 1) : abs(STATS_min - 1))
    set cbrange [1 - cb_val : 1 + cb_val]
    

    【讨论】:

    • 这正是我想要的。谢谢!
    • 这看起来与我在使用 Gnuplot 时遇到的问题非常相似。我正在做的是散点图分子中的原子。使用上面定义的调色板为不同的元素提供不同的颜色,但是如果我在分子中没有这些元素之一,Gnuplot 只会重新调整整个配色方案并且分子看起来像垃圾。有没有一种方法可以确定 1 是一种颜色、2 是一种颜色、3 是一种颜色等,而不必为我绘制的每个分子重新定义 cbrange 或调色板?换句话说,图中是否存在这些整数中的任何一个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多