【发布时间】:2018-06-12 15:33:18
【问题描述】:
编辑:我在这里描述的问题不再显示在当前版本的 matplotlib(2.1.1,2019 年 9 月 10 日编辑)中:肯定是从那时起修复的错误
我想要一个被Axis.plot_surface() 生成的表面部分覆盖的线图(用Axis.plot() 绘制)。我写了以下脚本:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
resolution = 100
ax = plt.gca(projection="3d")
x, y = np.meshgrid( np.linspace(-1.0, 1.0, resolution) ,
np.linspace(-1.0, 1.0, resolution) )
phi = (1.0 - x)*(1.0 - y) / 4.0
ax.plot([-1.0,1.0], [-1.0,1.0], [0.0,0.0], color="red")
ax.plot_surface(x, y, phi, linewidth=0, antialiased=False)
plt.show()
并确保在拨打plot_surface() 之前先拨打plot()。尽管如此,线图似乎总是具有最高的“zindex”并且被绘制在表面上。这是我得到的:
我如何实现这个结果? (不使用 Gimp……)
【问题讨论】:
-
上次问这个问题时我找不到这个问题,但是 IIRC 没有你自己的光线追踪器,它无法确定从你的特定角度看应该看到多少条线。
-
这是否意味着它是缺少功能或错误?
-
对于一般情况,这是一个缺失的功能。见My 3D plot doesn’t look right at certain viewing angles。对于这种只有一条线和一个面的特殊情况,可能仍有一些调整绘图顺序的解决方法或masking the line depending on the viewing angle。
标签: matplotlib mplot3d