Matplotlib 3D обходной путь для заказа сюжета - PullRequest
0 голосов
/ 22 октября 2018

Я знаю, что Matplotlib 3D не надежна для построения нескольких 3D-объектов (плоскостей, линий, точек) в правильном порядке: см. Проблема с 3D-графикой Matplotlib и Как рисовать пересекающиеся плоскости.Однако эти вопросы кажутся довольно старыми, поэтому предложены решения.Таким образом, я хотел бы знать, есть ли какие-то новые разработки, инструменты, обходные пути или жестко запрограммированные решения для следующего конкретного простого сценария:

import mpl_toolkits.mplot3d as a3
import matplotlib.pylab as plt
import numpy as np    

fig = plt.figure()
ax = a3.Axes3D(fig)

# create an orizontal plane
corners = [[0,0,0],[0,5,0],[5,5,0],[5,0,0]]
tri = a3.art3d.Poly3DCollection([corners], alpha=1)
tri.set_color('w')
tri.set_edgecolor('k')
ax.add_collection3d(tri)

# plot a vector
ax.plot([2,2],[2,2],[0,4], c = 'r')

# plot some points
ax.scatter([1,3],[1,3],[1,3], c = 'r')

ax.set_xlim([0, 5.0])
ax.set_ylim([0, 5.0])
ax.set_zlim([0, 2.5]);

plt.show()

In this image you can see the visualization issues: the vector it is not starting from the plane, as it should since his intiali point is (2,2,0)

На этом изображении вы можете видеть проблемы с визуализацией: вектор не начинается с плоскости, как следует, поскольку его начальная точка равна (2,2,0)

...