Я пытаюсь использовать matplotlib для создания графика поверхности прямоугольного массива (в моем случае это 47x70).Этот массив организован следующим образом:
47 - это измерение указывает число признаков
70 - это измерение указывает количество выборок
Массив содержит значения для этихособенности в каждом образце.
Если бы я генерировал график поверхности в MATLAB или Octave, это действительно просто.
vals = csvread("vals.csv");
surf(vals)
Вывод выглядит примерно так -
Массив в vals.csv был сгенерирован следующим образом -
tempvals = np.random.randint(0, 10000, size = (47, 70))
np.savetxt("vals.csv", tempvals, delimiter=',')
Как это сделать в python / matplotlib?
Здесь есть довольно хороший ответ .Однако этот ответ использует некоторую интерполяцию, которую я не могу использовать.Я хочу представить свои значения напрямую.
Я пытался написать что-то очень простое.Вот так -
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
vals = np.genfromtxt('vals.csv', delimiter=',')
fig1 = plt.figure(1, figsize = (9, 6))
ax1 = fig1.add_subplot(111, projection = '3d')
xax = np.arange(0, 46)
yax = np.arange(0, 70)
xax, yax = np.meshgrid(yax, xax)
Axes3D.plot3D(xax, yax, vals)
Это, конечно, не с ошибкой -
AttributeError: 'numpy.ndarray' object has no attribute 'has_data'
Я прошел всю эту страницу но мне чего-то не хватает.Как я могу создать графики поверхности для прямоугольных массивов?