这里的数据是任意的,仅用于显示我遇到的问题。我需要更高的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()