Matplotlib中2个离散值场景下colorbar不显示刻度标签问题
解决方案
该问题是由于imshow默认自动适配数组值范围时,极值刚好贴合colorbar边界导致刻度标签被截断,显式指定imshow的vmin、vmax参数固定颜色映射范围即可解决。
最简修复代码
import numpy as np from matplotlib import pyplot as plt img_data2 = np.random.choice([0,1], size=100).reshape((10,10)) # 显式固定颜色映射的取值范围 plt.imshow(img_data2, vmin=0, vmax=1) plt.colorbar(ticks = [0,1]) plt.show()
优化显示方案
如果希望每个离散值对应独立的完整色阶块,避免刻度贴边,可以将范围向两侧各延伸0.5个单位:
plt.imshow(img_data2, vmin=-0.5, vmax=1.5) plt.colorbar(ticks=[0,1])
该方案同样适用于更多离散值的场景,只需将vmin设为最小离散值减0.5,vmax设为最大离散值加0.5即可,无需修改colorbar的ticks配置。
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

