【发布时间】:2016-12-22 18:25:35
【问题描述】:
我正在尝试绘制一个值矩阵,并希望添加网格线以使值之间的边界更清晰。 不幸的是,imshow 决定将刻度线定位在每个体素的中间。有没有可能
a) 删除刻度,但将标签保留在同一位置,并且
b) 在像素边界之间添加网格线?
import matplotlib.pyplot as plt
import numpy as np
im = plt.imshow(np.reshape(np.random.rand(100), newshape=(10,10)),
interpolation='none', vmin=0, vmax=1, aspect='equal');
ax = plt.gca();
ax.set_xticks(np.arange(0, 10, 1));
ax.set_yticks(np.arange(0, 10, 1));
ax.set_xticklabels(np.arange(1, 11, 1));
ax.set_yticklabels(np.arange(1, 11, 1));
ax.grid(color='w', linestyle='-', linewidth=2)
网格线位置错误的图像:
【问题讨论】:
-
设置图像范围似乎可以解决问题;默认情况下,网格坐标系会稍微偏离自然原点:
plt.imshow(..., extent=(0, 10, 10, 0));
标签: python matplotlib imshow