Meshgrid 与标签矩阵的 3D 图
3D plot of Meshgrid vs. Labeling Matrix
假设我们要使用 Axes3d
绘制一个 n-by-n
网格。如果我们有一个包含 0
和 1
的 n-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()
假设我们要使用 Axes3d
绘制一个 n-by-n
网格。如果我们有一个包含 0
和 1
的 n-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()