我想在Matplotlib中使用imshow
或matshow
創建一個10x10網格。下面的函數將numpy數組作爲輸入,並繪製網格圖。但是,我想從陣列中的值也顯示在網格定義的單元格內。到目前爲止,我找不到一個正確的方法來做到這一點。我可以使用plt.text
將東西放在網格上,但這需要每個單元的座標,完全不方便。有沒有更好的方式去做我想要完成的事情?Matplotlib imshow/matshow在地圖上顯示值
謝謝!
注意:下面的代碼沒有從數組中取值,我只是在玩plt.text
。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors
board = np.zeros((10, 10))
def visBoard(board):
cmap = colors.ListedColormap(['white', 'red'])
bounds=[0,0.5,1]
norm = colors.BoundaryNorm(bounds, cmap.N)
plt.figure(figsize=(4,4))
plt.matshow(board, cmap=cmap, norm=norm, interpolation='none', vmin=0, vmax=1)
plt.xticks(np.arange(0.5,10.5), [])
plt.yticks(np.arange(0.5,10.5), [])
plt.text(-0.1, 0.2, 'x')
plt.text(0.9, 0.2, 'o')
plt.text(1.9, 0.2, 'x')
plt.grid()
visBoard(board)
輸出:
使用批註可以讓您非常靈活地指定文本的座標。 – tacaswell
我想知道是否有辦法做到這一點,而不指定座標。到目前爲止,我手動完成了它(可能不是最聰明的想法)假設數字大小可能會改變,我將不得不提出一個計算正確座標的函數。 – marillion