本主题已被触及here,但没有说明如何创建3D绘图并在(x,y)
平面中以指定的z
高度插入图像。
因此,为了提出一个简单且可重复的案例,假设我使用mplot3d
创建了一个3D图:
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
值的元素。Source.
1条答案
按热度按时间64jmpszr1#
使用
plot_surface
通过facecolors
参数绘制图像。如果需要添加值,请使用
PathPatch
: