我想使用网格来实现这一目标。但是,我遇到了很多颜色填充和轴的问题。我参考官方matplotlib文档中的一个例子,它非常接近这个图像 (the link),但它仍然有点不同。
这是我的错,图片太大,很难快速实施。所以我选择原始图像的一部分,在这里:
答案 0 :(得分:0)
尝试绘制custom heatmaps。例如
from matplotlib import colors
import matplotlib.pyplot as plt
import numpy as np
cmap = colors.ListedColormap(['cyan','gray','white','yellow'])
bounds=[0, 10, 20, 30, 40]
norm = colors.BoundaryNorm(bounds, cmap.N)
data=np.array([[5,15,5],[25,32,6],[15,31,25]])
heatmap = plt.pcolor(data, cmap=cmap, norm=norm)
plt.show()
0-10 之间的值将提供青色颜色, 10-20 将提供灰色,因此上。因此,请准备好您的数据阵列。
结果:
答案 1 :(得分:0)
我用seaborn解决了这个问题。
from matplotlib import colors
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
cmap = colors.ListedColormap(['white','gray','blue','yellow'])
bounds=[0, 2, 4, 6, 8]
norm = colors.BoundaryNorm(bounds, cmap.N)
data = np.array([[1,1,1,1,7,7,7,7], [1,1,1,1,1,1,1,5], [1,1,1,1,1,1,1,5], [1,1,1,3,1,1,1,5], [1,1,1,1,1,1,3,5]])
ax = sns.heatmap(data, cmap=cmap, norm=norm, linewidths=.5,
linecolor='black', square=True, cbar=False)
sns.plt.annotate('S', (1.4, 3.4))
sns.plt.show()