【问题标题】:Plotting smooth sphere from discrete data with gnuplot使用 gnuplot 从离散数据中绘制平滑球体
【发布时间】:2018-07-25 07:54:31
【问题描述】:

我有这样的python代码生成的数据:

u, v = np.mgrid[0:2*np.pi:180*1j, 0:np.pi:90*1j]
X = np.cos(u)*np.sin(v)
Y = np.sin(u)*np.sin(v)
Z = np.cos(v)

这是写入文件tmp.dat,我尝试在 gnuplot 中绘制它:

set pm3d
set palette
set hidden
splot "tmp.dat" using 1:2:3 with pm3d

但是,这给了我: 它在我想要的大致附近,但我想要一个 smooth 球体,而不是这个。 (我的真实数据也是如此;我希望在封闭的表面上具有透明度。)我尝试添加set dgrid3d 50,50 来尝试进行插值,但是,我实际上并不明白我从中得到了什么: 任何帮助或建议将不胜感激。将数据更改为参数化(使用uv 扫描数据)是一种选择,但是,我不确定该怎么做 - 当我尝试时,结果是一样的。

【问题讨论】:

  • 也许它可能是相关的 - 你如何将X,Y,Z 数据输出到文件中?每个 z 坐标的唯一值一个块?
  • 实际上是每 X 值。

标签: gnuplot


【解决方案1】:

不是一个完整的答案,但您的部分问题是“set hidden3d”在这里不可用。 Gnuplot 有两个独立的子系统来表示表面。其中之一,由“set hidden3d”控制,跟踪边界线段并可以移除被遮挡的部分。另一个是 pm3d,它使用实体填充四边形而不是边界线段。 pm3d 绘图没有删除被遮挡的四边形的选项,但您可以通过对它们进行深度排序来获得类似的效果。相关命令是

set pm3d depthorder

如果各个四边形近似为正方形,这会相当有效,但对于细长的四边形会产生不好的结果,因为刻面的两端与相邻刻面的深度可能会发生冲突。

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 2015-06-15
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多