Я пытаюсь построить трехмерную фигуру с двухмерным изображением, накладывающим плоскость xy. Я только начал работать с python, так что это сложнее, чем должно быть.
Этот вопрос здесь касается того, что я пытаюсь сделать: Наложение изображения в 3D-графике с использованием python а>. Но когда я запускаю предоставленный код, я получаю следующую ошибку:
File "test.py", line 13, in <module>
ax.plot_surface(x, y, 10, rstride=5, cstride=5, facecolors=img)
File "/usr/lib64/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 663, in plot_surface
rows, cols = Z.shape
AttributeError: 'int' object has no attribute 'shape'
Изображение, которое я использую, хранится в той же папке, что и мой «test.py». В вопросе, на который я ссылался выше, используется изображение из get_sample_data, но если я отредактирую его, чтобы использовать свое изображение, код будет следующим:
from pylab import *
from mpl_toolkits.mplot3d import Axes3D
from matplotlib._png import read_png
img = read_png('milkyway.png')
x, y = ogrid[0:img.shape[0], 0:img.shape[1]]
ax = gca(projection='3d')
ax.plot_surface(x, y, 10, rstride=5, cstride=5, facecolors=img)
show()
Я получаю ту же ошибку, использую ли я get_sample_data или собственное изображение. Любые предложения о том, что я могу изменить? Спасибо!