如何为Python中matplotlib的imshow添加自定义刻度?
搞定plt.imshow()自定义刻度的问题
为啥之前的代码不行?
plt.imshow()默认用数组的索引当坐标轴刻度——你这个11×11的数组,坐标轴刻度范围是0到10。直接把6.5到7.5的数值传给plt.xticks(),程序会把这些数当成索引位置找刻度,自然显示乱套。
正确实现方法
给plt.xticks()和plt.yticks()同时传两个参数就行:
- 第一个是刻度在原坐标轴上的位置(必须对应0到10的索引范围)
- 第二个是你想显示的自定义刻度标签
完整代码示例:
import numpy as np import matplotlib.pyplot as plt zmm = np.linspace(0,121,121).reshape(11,11) plt.imshow(zmm, cmap = 'Blues') # 定义要显示的自定义刻度标签 xtick_labels = np.linspace(6.5,7.5,6) ytick_labels = np.linspace(.14,.18,6) # 对应原坐标轴的位置(把0到10均匀分成6个点) xtick_positions = np.linspace(0, 10, 6) ytick_positions = np.linspace(0, 10, 6) # 关联位置与标签,设置刻度 plt.xticks(ticks=xtick_positions, labels=xtick_labels.round(2)) plt.yticks(ticks=ytick_positions, labels=ytick_labels.round(2)) plt.show()
额外提示
- 要是不想均匀分布刻度,也可以手动指定位置,比如
xtick_positions = [1,3,5,7,9],再对应你需要的标签即可 round(2)是让刻度显示两位小数,看着更清爽,不需要的话可以直接去掉
内容的提问来源于stack exchange,提问作者Bruno Conte Leite
相关产品推荐
相关产品推荐

