如何更改此matplotlib热图的颜色?

时间:2020-04-29 16:08:33

标签: python matplotlib

这里的数据是任意的,仅用于显示我遇到的问题。我需要更高的this heatmap的对比度,理想情况下,如果每个正方形包含“ -1”,则每个正方形将为白色;如果高于“ -1”,则为黑色。到目前为止,the documentation I've found对于不同的配色方案都将它们显示为渐变,但我尚不清楚是否可以通过以下方式来操纵它们:“-1”以上的每个数字都是黑色,而所有“ -1”都将是黑色。是白色的。

import matplotlib.pyplot as plt
from matplotlib import colors

road=np.array([[-1 , -1 , -1 , 1 , -1 , 4 , -1 , -1 , -1 , -1 , 4 , -1 , 1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 ],
               [-1 , -1 , -1 , 5 , 2 , -1 , -1 , -1 , -1 , 4 , -1 , -1 , -1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 ],
               [-1 , -1 , -1 , -1 , -1 , -1 , 3 , -1 , 5 , -1 , -1 , -1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 , -1],
               [-1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 , -1 , 4 , -1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 , -1 , 5],
               [-1 , -1 , 5 , -1 , -1 , -1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 , 5 , -1 , -1 , -1 , -1 , 5 , -1]])

fig, ax = plt.subplots()
im = ax.imshow(road)
ax.set_xticks(np.arange(20))
ax.set_yticks(np.arange(5))
plt.setp(ax.get_xticklabels(), ha="right",
         rotation_mode="anchor")

for i in range(5):
   for j in range(20):
       if road[i,j] > -1:
        text = ax.text(j, i, road[i, j],
                       ha="center", va="center", color="black")

fig.tight_layout()
plt.show()

0 个答案:

没有答案