#python #matplotlib #plot
Вопрос:
У меня есть несколько поверхностей, и я хочу построить их с помощью matplotlib. Каждая поверхность имеет четыре угла, хранящиеся в массивах numpy:
import numpy as np
points = np.array ([[[472.983284, 114.5,-1792.],
[720.65216064, 1535.5, -1792.],
[1500.20385742, 1535.5, -1008.],
[1252.39562988, 114.5, -1008.]],
[[590.38764954, 114.5, -1792.],
[652.08530426, 1535.5, -1792.],
[1405.10574341, 1535.5, -1008.],
[1343.39660645, 114.5, -1008.]],
[[679.80918884, 114.5, -1792.],
[568.60767365, 1535.5, -1792.],
[1323.85253906, 1535.5, -1008.],
[1435.00518799, 114.5, -1008.]]])
Затем я использую следующий код для создания 3d-графика поверхностей:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.ticker import (AutoMinorLocator, MultipleLocator)
%matplotlib qt5
fig = plt.figure()
ax = fig.add_subplot (111, projection="3d")
for i in points:
x = np.array([[i[0,0], i[-1,0]], [i[1,0], i[2,0]]])
y = np.array([[i[0,1], i[-1,1]], [i[1,1], i[2,1]]])
z = np.array([[i[0,2], i[-1,2]], [i[1,2], i[2,2]]])
ax.plot_surface(x, y, z)
ax.set_xlabel('X'); ax.set_ylabel('Y'); ax.set_zlabel('Z')
plt.show()
это дает мне 3d-сюжет:
Но я также хочу иметь 2d-график из 3d-поверхностей. Эта строка кода дает мне представление, но все равно сюжет 3d:
ax.view_init(azim=270, elev=0)
But I have no idea how to create real 2d plot from the 3d one. I mean I want to have lines insted of surfaces. For example I want to say in a defined value of y
axis, give me a 2d plot of existing surfaces as lines. In the second fig I have shown lines instead of surfaces when y
equals 114.5
. The plot I want looks like spaghetti plots (like last unrealistic plot in my post).
In advance I do appreciate any help.
Комментарии:
1. предположим,что вы хотите создать график (x ,y), затем вам нужно удалить третью координату,представляющую z, а затем использовать matplotlib.pyplot для рисования графика (x, y).
2. Уважаемый @ Ayyoub ESSADEQ, спасибо за подсказку, но она работает только для первого и последнего значений y. Иногда мне хочется нарисовать некоторые участки из середины диапазона y.