matplotlib绘制10×10随机数组时刻度10处无显示问题如何解决
matplotlib 10×10数组可视化边缘空白问题解决
问题根源
- 10×10的二维数组在
imshow默认渲染规则下,每个像素的中心坐标取值为0~9,像素边界最大值为9.5。你手动设置坐标范围到10后,9~10区间无任何像素数据,因此刻度10的位置显示空白。
修复方案
方案1:对齐刻度与像素边界(保留0~10刻度)
给imshow添加extent参数指定图像的实际坐标范围,让像素边界正好对齐整数刻度,修改对应代码段:
arr = np.random.rand(10, 10) # extent四个参数分别为:x左边界、x右边界、y下边界、y上边界 plt.imshow(arr, extent=[0, 10, 0, 10]) plt.ylim(0, 10) plt.xlim(0, 10) plt.xticks(np.arange(0.0, 11.0, 1.0)) plt.yticks(np.arange(0.0, 11.0, 1.0))
修改后所有刻度区间都有对应像素,不会出现空白区域。
方案2:刻度对应数组下标(0~9刻度)
如果需要刻度值直接对应数组的下标,调整坐标范围和刻度位置即可:
arr = np.random.rand(10, 10) plt.imshow(arr) # 坐标范围刚好覆盖所有像素边界 plt.xlim(-0.5, 9.5) plt.ylim(-0.5, 9.5) # 刻度位置对齐每个像素中心,标签显示对应下标 plt.xticks(np.arange(0.5, 10, 1), labels=np.arange(0, 10, 1)) plt.yticks(np.arange(0.5, 10, 1), labels=np.arange(0, 10, 1))
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

