Gnuplot:如何将 pm3d 绘图继续到设定范围之外?
Gnuplot: How to continue a pm3d plot to the outside of the set range?
我在 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
,它只需要 1 个剪辑的“热矩形”在域内,但 result 是角落不在域外,不幸的是,这并没有解决问题。
附加信息:
OS: Ubuntu 20.04
$ gnuplot -V
gnuplot 5.2 patchlevel 8
如果有人知道我是如何实现我想要做的事情的,那么分享这些知识会很好!
干杯!
Gnuplot 5.4 确实提供了这种在 z 坐标上的平滑裁剪,但不幸的是,这没有帮助,因为在这种情况下你想在 x 上裁剪。
下面是一个通过手动干预执行 x 裁剪的示例。
x坐标的复杂表达式只是为了生成点
使用 non-orthogonal 网格。
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 (+*/10.) :():(f(,)) with pm3d
set title "Manual clipping at x=6"
splot '++' using (xclip(+*/10.)):():(f(,)) with pm3d
unset multiplot
我在 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
,它只需要 1 个剪辑的“热矩形”在域内,但 result 是角落不在域外,不幸的是,这并没有解决问题。
附加信息: OS: Ubuntu 20.04
$ gnuplot -V
gnuplot 5.2 patchlevel 8
如果有人知道我是如何实现我想要做的事情的,那么分享这些知识会很好!
干杯!
Gnuplot 5.4 确实提供了这种在 z 坐标上的平滑裁剪,但不幸的是,这没有帮助,因为在这种情况下你想在 x 上裁剪。 下面是一个通过手动干预执行 x 裁剪的示例。 x坐标的复杂表达式只是为了生成点 使用 non-orthogonal 网格。
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 (+*/10.) :():(f(,)) with pm3d
set title "Manual clipping at x=6"
splot '++' using (xclip(+*/10.)):():(f(,)) with pm3d
unset multiplot