Эта тема затрагивалась здесь, но не было указано, как создать 3D-график и вставить изображение в плоскость (x,y)
на указанной высоте z
.
Итак, чтобы придумать простой и воспроизводимый случай, скажем, я создаю трехмерный график, подобный этому, с mplot3d
:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
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)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.winter,
linewidth=0, antialiased=True)
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
plt.show()
На уровне z=min(z)-1
, где -1
– это визуальное смещение во избежание наложения, я хочу вставить изображение, представляющее элементы, для которых кривая показывает определенное значение. Как это сделать?
В этом примере меня не волнует идеальное соответствие между элементом и его значением, поэтому, пожалуйста, не стесняйтесь загружать любое изображение, которое вам нравится. Кроме того, есть ли способ позволить этому изображению вращаться, если совпадение не устраивает?
ИЗМЕНИТЬ
Это наглядный пример чего-то подобного, сделанного для 3D-гистограммы. Серые фигуры на уровне z=0
— это элементы, для которых столбцы показывают определенное значение z
. Источник. а>