我想使用python和matplotlib绘制如下图所示的草图.我想制作网格并不是那么难,但是如何以特定的方式着色某些方块?

我想要一种向量化特征值计算的numpy-sh方式,这样我就可以给它一个矩阵矩阵,它将返回各个特征值的矩阵.
例如,在下面的代码中,B是由3x3矩阵A的4个副本组成的块6x6矩阵.C是我想看到的输出,即维数(2,2,3)的数组(因为A有3个特征值).
这当然是一个非常简化的例子,在一般情况下,矩阵A可以具有任何大小(尽管它们仍然是正方形),并且矩阵B不一定由A 的副本形成,而是不同的A1,A2等(所有相同大小但包含不同的元素).
import numpy as np
A = np.array([[0, 1, 0],
[0, 2, 0],
[0, 0, 3]])
B = np.bmat([[A, A], [A,A]])
C = np.array([[np.linalg.eigvals(B[0:3,0:3]),np.linalg.eigvals(B[0:3,3:6])],
[np.linalg.eigvals(B[3:6,0:3]),np.linalg.eigvals(B[3:6,3:6])]])
Run Code Online (Sandbox Code Playgroud) 我想出了以下代码来生成python + matplotlib中的数字:
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(1,1,1, projection='3d')
ax.plot_surface(KX[kxl3d:kxr3d,kxl3d:kxr3d], KY[kxl3d:kxr3d,kxl3d:kxr3d],
BLP[kxl3d:kxr3d,kxl3d:kxr3d], rstride=8, cstride=8, alpha=0.4)
for idx in range(3):
ax.plot(kx[x_points]+momentum_spi[idx,0], ky[y_points]+momentum_spi[idx,1],
energy_spi[idx], linestyle='none', marker='o',
markerfacecolor=color_spi[idx], markersize=5)
ax.set_xlim(kl3d, kr3d)
ax.set_ylim(kl3d, kr3d)
ax.set_xlabel(r'$k_x[\mu m^{-1}]$')
ax.set_ylabel(r'$k_y[\mu m^{-1}]$')
ax.set_zlabel(r'$\epsilon-\omega_X[\gamma_p]$')
Run Code Online (Sandbox Code Playgroud)
输出是:

我的问题是,我怎么能