Итак, у меня есть три массива данных, X, Y и Z, каждый из которых содержит 225 чисел. То, что я хотел бы сделать, это нанести все три значения одновременно на поверхностный график.
Итак, из того, что я понял, вы хотите построить трехмерный поверхностный график.
Но, похоже, вы предоставляете только 3 1xn массива. (в данном случае n == 255)
При построении графика поверхности на практике вы получаете каждую возможную комбинацию базы (плоскость XY) и сообщаете, насколько высока точка Z в данных координатах XY, поэтому Z изображается как функция Z (I, J)
но мне нужно, чтобы первая точка Z была связана с первыми точками X и Y и т. Д. Возможно ли это в Python?
Да, но если вы свяжете каждую точку Z с первыми X, Y и т. Д., У вас будут только значения Z для X == Y, что будет неполной информацией для вашего поверхностного графика!
Хороший (отличный) пример поверхностного сюжета взят из официального описания matplotlib docs
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
, что приводит к:
Что на самом деле делает код:
- Определение входных векторов X и Y (диапазон и интервал)
- Создание сетки из этих векторов (если неясно, что такое сетка, выведите вывод!)
- Определение функции для домена X, Y
- Применение его для получения Z
Если вы отметите, X, Y и Z - это 2-мерные массивы!
Надеюсь, это поможет!