Python: Как создать поверхностный график из коллекции трехмерных координат - PullRequest
0 голосов
/ 26 марта 2020

Мне даны три numpy -матрицы, которые содержат координаты x, y и z нескольких точек соответственно. Фактически, есть 100 точек, которые расположены в сетке:

grid

Итак, хотя есть 100 точек, есть только 10 различных х - и 10 разных y координат. Есть, однако, 100 разных координат z.

Я думал, что смогу создать график поверхности, используя следующий код:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def plot_surface():
    x = np.arange(10)
    y = np.arange(10)
    z = z_coords.reshape(10,10)
    X, Y = np.meshgrid(x, y)

    fig = plt.figure()
    ax = Axes3D(fig)
    ax.plot_surface(X, Y, Z)

Я знаю, что - поскольку я не могу описать координату z с помощью функции x и y - Координата z, например, при x = 1 и между y = 1 и y = 2 будет постоянной. Я в порядке с этим, хотя.

В любом случае, код не работает. Может быть, мое мышление не так. Запустив это, я получаю ошибку: ValueError: несоответствие формы: объекты не могут быть переданы одной фигуре

1 Ответ

0 голосов
/ 26 марта 2020

Вы уверены, что ваш массив z может быть преобразован в (10,10)? Я быстро запустил следующее, так как не знал специфики вашего массива z, кажется, что график работает так, как вы хотели?

import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D

def plot_surface():
    x = np.arange(10)
    y = np.arange(10)
    z = np.zeros((len(x),len(x)))+10
    X, Y = np.meshgrid(x, y)

    fig = plt.figure()
    ax = Axes3D(fig)
    ax.plot_surface(X, Y, z)
plot_surface()
plt.show(True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...