【问题标题】:Gnuplot 3d surface plot with overlayed line?带有覆盖线的 Gnuplot 3d 曲面图?
【发布时间】:2013-08-05 08:12:55
【问题描述】:

我需要绘制一个 3d 曲面(来自一个文件),然后在该曲面上绘制一条线(来自不同的文件)。我找到了一个相关的线程(Gnuplot: Plotting a path over a surface),但建议的答案是我已经尝试过的东西(但它没有用)。

表面是 3D 势能表面,线是该表面上的轨迹。这条线描述了我正在研究的系统是如何在表面上演化的。

我目前正在这样做:

splot "trajectory.dat" using 4:6:10 title "{/Helvetica=23 trajectory}"  with lines lt -1
set pm3d
set hidden3d

splot   "surface.dat" using 1:3:7 title "{/Helvetica=23 surface}"

但我得到的只是表面,没有轨迹。当我从脚本中绘制它时,轨迹会短暂闪现,但随后表面会出现在它上面,这就是我能看到的全部。即使在旋转和重新定向表面时也没有轨迹迹象。

我尝试过颠倒绘图顺序(首先是表面,然后是轨迹),但这也不起作用。

我还尝试在轨迹上放置一个 z 轴偏移量,以检查它是否不是表面被绘制在轨迹顶部的情况。这也失败了。

关于如何进行的任何想法?我浏览了 gnuplot 帮助文件,没有任何示例或案例有帮助。我很好,真的被困住了。请帮忙!我非常感谢任何意见。

【问题讨论】:

    标签: 3d gnuplot physics


    【解决方案1】:

    您必须有一个splot 调用,就像在Gnuplot: Plotting a path over a surface 的答案中一样:

    set pm3d
    set hidden3d
    splot "trajectory.dat" using 4:6:10 title "trajectory"  with lines lt -1,\
          "surface.dat" using 1:3:7 title "surface"
    

    否则,如果您不在multiplot 模式下,第二个splot 会创建一个全新的图表。

    【讨论】:

    • 感谢 Christoph,在进行这些更改后,我可以从某些视角看到轨迹,但在其他视角看不到。如果我旋转绘图以使轨迹以轴的白色作为背景,则轨迹可见。但是,如果轨迹在表面的视线内,它就会消失,只有表面可见。是否有可能在表面上看到轨迹?这就是它应该在出版物中的样子。如果我的解释不够清楚,我可以提供脚本和图像的副本。
    • pm3dhidden3d 一起使用并非易事(例如set pm3d hidden3d)。为什么需要hidden3d?是只针对表面本身还是表面也应该隐藏部分轨迹。它只是表面的,你可以试试set pm3d depthorder。否则,有一个示例图像来显示您现在的行为类型会很有趣。
    • 再次感谢!使用 hidden3d 的原因是为了去除 3d 表面上难看的线条。但是,如果我将线型更改为 0(小黑点),这个问题就解决了。在取消设置 hidden3d 并将线型更改为 0 后,我可以从各个角度清楚地看到轨迹,并且没有丑陋的线连接表面中的点。非常感谢!!希望我能在某个时候回报这个人情!!
    • 你也可以使用unset surface来去除pm3d表面的线条:set pm3d; unset surface; splot x**2 + y**2
    • 嗯,unset surface 删除了线条/点,但也删除了轨迹。从lt 0 获得的点实际上在最终情节中看起来相当不错,所以我会保留它们。谢谢
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2010-12-26
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多