Meshgrid 与标签矩阵的 3D 图

3D plot of Meshgrid vs. Labeling Matrix

假设我们要使用 Axes3d 绘制一个 n-by-n 网格。如果我们有一个包含 01n-by-n 标签矩阵,我们如何根据 3D 绘图中的标签矩阵设置网格像素颜色?

已编辑)。有一个关于matplotlib的教程:http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html。查找 plot_surface 函数。您需要做的就是将标签遮罩转换为喜欢的颜色。您可以通过教程中描述的元组方法来完成,也可以通过预生成的字符矩阵来完成,就像我在下面所做的那样:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import matplotlib.pyplot as plt
import numpy as np

N=10        # matrix size

c1=np.random.randint(2,size=(N,N))  # your mask of 0 and 1
c2=1-c1                             # inverted mask
char1 = np.chararray((N, N))
char1[:] = 'r'                      # color1
char2=np.chararray((N, N))
char2[:]='b'                        # color2


colors=c1*char1+c2*char2            # color mask for plotting

data=np.random.rand(N,N)*5          # data you are plotting

X=linspace(-3,3,N)
Y=linspace(0,4,N)
X,Y=meshgrid(X,Y)
Z=data

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,linewidth=0, antialiased=False)

plt.show()