【问题标题】:Matplotlib imshow ticks are wrong with negative valuesMatplotlib imshow 刻度是错误的负值
【发布时间】:2022-09-23 22:53:00
【问题描述】:
import matplotlib.pyplot as plt
import numpy as np
a = np.random.randn(5,5)
plt.imshow(a)
plt.xticks(range(5))
plt.yticks([i-2 for i in range(5)])
plt.show()
结果是
??
还想象我有 500 个而不是 5 个刻度,我怎么能通过刻度但显示的更少(例如每 10 个)?
标签:
python
matplotlib
imshow
【解决方案1】:
使用extent参数,不需要使用xticks或yticks:
plt.imshow(a, extent=(-0.5, 4.5, -2.5, 2.5))
输出:
第二个问题使用MultipleLocator:
from matplotlib.ticker import MultipleLocator
a = np.random.randn(500,500)
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(a, extent=(-0.5, 500.5, -250.5, 250.5))
ax.xaxis.set_major_locator(MultipleLocator(25))
ax.yaxis.set_major_locator(MultipleLocator(25))
输出: