【问题标题】:Gnuplot: How to continue a pm3d plot to the outside of the set range?Gnuplot:如何将 pm3d 绘图继续到设定范围之外?
【发布时间】:2020-10-26 09:18:28
【问题描述】:

我在 gnuplot 中使用 pm3d 绘制数据点时遇到问题。在我的数据文件中,点(2-dim 域)不是矩形对齐的,而是抛物线,如图this 所示,其中数据点彼此之间没有完全对齐。我的目标是为特定的xrange 创建一个带有pm3d 的热图,其中热图继续到所选xrange 的边界。

我做了什么:

使用以下最小代码示例使用 pm3d 绘制数据集:

set terminal qt
set xrange [-0.25:1.00]
set view map
splot "data.txt" u 1:2:3 with pm3d

我得到了什么:

我的数据文件的heatmap,但在我切割 x 域的边界点处有丑陋的角落,因为边界点没有在彼此“上方”对齐。

我的预期:

一个热图,其中“热”值延续到域的实际边界,就像一个简单的“带线”图的情况一样,如this 图中所示。

到目前为止,我为实现预期所做的尝试:

我尝试了几个pm3d 选项,包括选项clip1in,它只需要一个“热矩形”的剪辑就可以在域内,但result 是角落没有放置在域,不幸的是,这并不能解决问题。

其他信息: 操作系统:Ubuntu 20.04

$ gnuplot -V
gnuplot 5.2 patchlevel 8

如果有人知道我是如何实现我正在尝试做的事情的,很高兴分享这些知识!

干杯!

【问题讨论】:

    标签: gnuplot heatmap


    【解决方案1】:

    Gnuplot 5.4 确实在 z 坐标上提供了这种平滑剪裁,但不幸的是,这无济于事,因为在这种情况下您希望在 x 上进行剪裁。 这是通过手动干预执行 x 裁剪的示例。 x坐标的复杂表达式只是为了生成点 使用非正交网格。

    xclip(x) = x > 6. ? 6. : x    # clip x to maximum value of 6.
    f(x,y) = sin(sqrt(x*x + y*y)) # some function to plot
    set sample 21; set isosample 21
    set view map
    set xrange [-6 : 6]
    unset key    
    set multiplot layout 1,2
    
    set title "No clipping"
    splot '++' using       ($1+$2*$2/10.) :($2):(f($1,$2)) with pm3d
    
    set title "Manual clipping at x=6"
    splot '++' using (xclip($1+$2*$2/10.)):($2):(f($1,$2)) with pm3d
    unset multiplot
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多