如何使用matplotlib绘制这张图片?

时间:2018-04-25 14:37:08

标签: python matplotlib

我想使用网格来实现这一目标。但是,我遇到了很多颜色填充和轴的问题。我参考官方matplotlib文档中的一个例子,它非常接近这个图像 enter image description herethe link),但它仍然有点不同。

这是图片 enter image description here

这是我的错,图片太大,很难快速实施。所以我选择原始图像的一部分,在这里:

enter image description here

2 个答案:

答案 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 将提供灰色,因此上。因此,请准备好您的数据阵列。

结果:

Heatmap

答案 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()

result