【发布时间】:2017-09-11 16:15:19
【问题描述】:
我正在 matplotlib 中绘制 3d 线和点。 在输出上,总是在顶部绘制最后一个数据,而不是 3d 投影中的“更接近”的数据。 我想实现一个考虑视角的视图。
这是一个最小的代码,在这种情况下,红线总是在蓝线的顶部:
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize = [8, 14])
ax1 = fig.add_subplot(211, projection='3d')
ax2 = fig.add_subplot(212, projection='3d')
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
ax1.plot(x, y, 0, 'b', lw = 3)
ax1.plot(x, y, 1, 'r', lw = 3)
ax2.plot(x, y, 0, 'b', lw = 3)
ax2.plot(x, y, 1, 'r', lw = 3)
ax1.view_init(90, 0)
ax2.view_init(-90, 0)
plt.show()
【问题讨论】:
-
您可以尝试将
zorder添加到每一行,例如zorder=0用于第一个情节,zorder=1用于第二个情节。 -
@MartinEvans,该实验相当于更改线条的绘制顺序。我们得到相反的结果,而不是总是在蓝色之上红色。这个想法是视图考虑了线条与观察者的接近程度。
-
又是平常的My 3D plot doesn’t look right at certain viewing angles-problem。
-
这正是我遇到@ImportanceOfBeingErnest 的问题。那么,除了使用其他绘图工具之外,没有其他可用的解决方案吗?
-
好吧,正如常见问题解答所说,您可以查看 mayavi。请注意,关于软件推荐的问题在这里是题外话,但您当然可以尝试您找到的任何 python 3D 库,如果失败,请在此处发布特定问题。
标签: python matplotlib plot 3d