【问题标题】:How can I modify the scale in gnuplot to an arbitrary function?如何将 gnuplot 中的比例修改为任意函数?
【发布时间】:2021-08-07 12:58:55
【问题描述】:

我想要一个像这样的对数颜色条

1, 10^-2, 10^-4, 10^-6, 0(或 +-10^-8), -10^-6, -10^-4, -10^-2,

它们之间的间距相同

但我找不到任何可以更强烈地修改音阶的命令。

请发送帮助:)

【问题讨论】:

    标签: gnuplot scale


    【解决方案1】:

    您可以设置任意 tic 标签。检查help cbticshelp xtics。 这就是您所要求的,但是,我假设您还想绘制一些数据。 你想绘制什么?地图,一些功能?您的数据看起来如何? 此外,您必须为您的数据定义一些映射函数。

    加法:

    这将是一个可能的(不连续的)映射函数,用于将您的值从 [-1:-1e-8] 映射到 [-1:0] 和从 [+1e-8:1][0:1],并将值从 abs(value)<1e-8 映射到 NaN

    f(x) = abs(x)<1e-8 ? NaN : sgn(x)*(1+log10(abs(x))/8)
    

    代码:

    reset session
    
    set xrange[1e-10:1]
    set logscale xy
    set grid x,y
    
    set cbrange[-1:1]
    
    set cbtics("-1" -1, "-10^{-2}" -0.75, "-10^{-4}" -0.5, "-10^{-6}" -0.25, "0" 0, \
                "1"  1,  "10^{-2}"  0.75,  "10^{-4}"  0.5,  "10^{-6}"  0.25)
    
    plot x lc palette
    

    结果:

    【讨论】:

    • 非常感谢!!这正是我想要的。我已经在 cbtics 中看到过这样的解决方案,但我永远不会想到它也适用于对数为零的对数。我会绘制地图。
    • @Pia 很高兴听到。现在你必须找到映射函数。请注意,此函数需要将具有绝对值 &lt;1e-8 的所有内容映射到 NaN。您可以为此使用三元运算符,检查help ternary
    猜你喜欢
    • 2014-09-29
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多