Python 使用matplotlib,如何将XLABEL移动到顶部,并使所有标签在网格线之间居中?
我正在尝试创建一个10x10的网格,其中每个单元格不是黑色就是白色。我让它以我想要的方式工作,但是我想将x标签移动到网格的顶部,并且我希望所有标签都在未与它们对齐的网格线之间居中。我该怎么办Python 使用matplotlib,如何将XLABEL移动到顶部,并使所有标签在网格线之间居中?,python,matplotlib,label,Python,Matplotlib,Label,我正在尝试创建一个10x10的网格,其中每个单元格不是黑色就是白色。我让它以我想要的方式工作,但是我想将x标签移动到网格的顶部,并且我希望所有标签都在未与它们对齐的网格线之间居中。我该怎么办 import numpy as np import matplotlib.pyplot as plt # data = random.random((10, 10)) face = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1,
import numpy as np
import matplotlib.pyplot as plt
# data = random.random((10, 10))
face = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 1, 1, 1, 0, 0, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 0, 1],
[1, 1, 0, 1, 1, 1, 1, 0, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
img = plt.imshow(face, interpolation='nearest')
img.set_cmap('hot')
plt.axis('on')
plt.xticks(np.arange(0, 11, 1) - 0.5, np.arange(0, 11, 1))
plt.yticks(np.arange(0, 11, 1) - 0.5, np.arange(0, 11, 1))
plt.grid(True, linestyle='dotted', linewidth=1, color='k')
plt.plot()
plt.savefig("test.png", bbox_inches='tight')
plt.show()
如果我理解正确,请使用
matshow
而不是imshow
。此外,使用minor
记号标记:
fig, ax = plt.subplots()
img = ax.matshow(face, interpolation='nearest', cmap='hot')
ax.set_xticks(np.arange(10), minor=True)
ax.set_xticklabels(np.arange(10), minor=True)
ax.set_yticks(np.arange(10), minor=True)
ax.set_yticklabels(np.arange(10), minor=True)
plt.xticks(np.arange(11)-0.5,[])
plt.yticks(np.arange(11)-0.5,[])
plt.grid(True, linestyle='dotted', linewidth=1, color='k')
plt.plot()
# plt.savefig("test.png", bbox_inches='tight')
plt.show()
输出: