Gnuplot 如何在3d绘图中沿顶部边界放置tic标记?

Gnuplot 如何在3d绘图中沿顶部边界放置tic标记?,gnuplot,Gnuplot,我正在用Gnuplot制作一些3D曲面图,在图的每一个边界上都有tic标记是非常有用的。在所附的样本图中,沿左上角或右上角水平边界(边界256和512)没有tic标记。为了在后面的垂直平面上绘制垂直网格线,我需要在这些边界上有tic标记。我怎样才能做到这一点 您可以尝试使用x2tics和y2tics在那里设置tics。 这是的文档,我还没有找到使用网格和边框解决这个问题的方法。但是,有一个相对简单的解决方法,只有在每次绘制数据时不更改范围时才有用 基本上,在后墙上绘制一个恒定曲面,该曲面与x-y

我正在用Gnuplot制作一些3D曲面图,在图的每一个边界上都有tic标记是非常有用的。在所附的样本图中,沿左上角或右上角水平边界(边界256和512)没有tic标记。为了在后面的垂直平面上绘制垂直网格线,我需要在这些边界上有tic标记。我怎样才能做到这一点

您可以尝试使用
x2tics
y2tics
在那里设置tics。
这是

的文档,我还没有找到使用
网格和
边框解决这个问题的方法。但是,有一个相对简单的解决方法,只有在每次绘制数据时不更改范围时才有用

基本上,在后墙上绘制一个恒定曲面,该曲面与x-y平面中栅格线的线型、数量和位置相匹配

首先,设置范围。我给它们贴上标签,因为我们以后需要这些数字

xmin=0    ; xmax = 100
ymin=0.01 ; ymax=1000
zmin=0    ; zmax=990
set xrange [xmin:xmax]
set yrange [ymin:ymax]
set zrange [zmin:zmax]
设置z轴与x-y平面(ticslevel)的交点,我猜出了一个可视角度来匹配您的示例。我们希望在
multiplot
之前设置这些

set ticslevel 0.0
set view 60,45,1
现在,乐趣来了。对于这一部分,您必须知道x-y平面中栅格线的数量(与x轴和y轴上的主tic数量相同)。我们将首先绘制后网格墙,以便它们位于最后的数据/函数后面。此外,我关闭了该部分的网格和边框,但如果您将它们保留在中,它们应该完全重叠

set multiplot
unset grid
set border 0
即使y轴具有对数比例,栅格也是线性分隔的(等距栅格线)。所以在这一点上,我想要y轴上的线性比例。(如果在此点之前
设置对数刻度y
,请将其注释掉。)我不希望在y轴上使用线性标签,因为它们在对数刻度上不同,因此我相应地设置了格式

set format y ""
set isosamples 6,9 # - set this to number of tics on y-axis,z-axis
这是在不同范围上绘图时可能更改的唯一手动设置。您需要将
isosamples
的数量设置为y轴、z轴上的TIC数量

为了控制gnuplot将为每个曲面使用多少行,我们需要设置isosamples(如上所述)和虚拟变量的范围
u,v
。请注意线型0,它是轴网线类型。 我在x=xmin处绘制第一面墙:

set parametric
set urange [ymax:ymin]
set vrange [zmax:zmin]
splot xmin,u,v w lines lt 0
同样,我们在y=ymax处做另一面墙

set urange [xmin:xmax]
set vrange [zmin:zmax]
splot u,ymax,v w lines lt 0
unset parametric
现在我有了墙,我可以画出你已经在图片中看到的东西。设置边界、tics、重新启用之前禁用的y轴标签、设置y轴上的对数比例(现在是个好时机)并将isosamples重置为默认值

set xtics mirror
set ytics mirror
set ztics mirror
set grid ytics xtics back
set logscale y
set format y " %g"
set isosamples 10,10
并按习惯绘制数据/函数

splot 'data.txt' w lines
unset multiplot
我们完成了

可能的必要修改:

我想你的x轴和y轴与我的不同,因为像
view 60135,1
这样的东西很容易实现相反的方向。但这也会切换x和y。然后,您的曲面将更改坐标。

不幸的是,这对我不起作用(是的,我在发布之前尝试过这个选项)。据我所知,x2和y2都在3d绘图的底面上。我想在顶部周围的水平边界上设置tics。我尝试过“set xtics 256 mirror…”之类的命令,其中256表示“左上后”边框,但这不起作用。我还尝试了512、1024和2048,它们都是顶部水平边框。这些选项都不会在顶部留下抽搐痕迹。您是否考虑过这可能是。。。不可能:)啊!这个可怕的想法掠过我的脑海,但我想“这是gnuplot!它可以做任何事情!”。也许不是。也许我应该弄清楚如何提交bug/功能请求。哇,谢谢你的详细回答!当我有机会尝试时,我会给你回复的。看起来很有希望…没问题。解决这个问题我很开心。我学到了更多关于3D绘图的知识,实际上它非常简洁。。。我通常被2D困住了…我只是想再次感谢你提供了这个解决方案。我实现它没有问题,除了我通常有一个反向视图,所以必须更改一些x,y限制。有了垂直网格线真的让我的一些情节更容易阅读和更有意义@jt_04:别忘了投票选出有用的答案,并接受回答你问题的答案。