Python 为什么在本例中我的栅格偏移是?
我试图用matplotlib绘制一个随机占用的网格。栅格看起来与块的偏移量是随机的: 代码如下:Python 为什么在本例中我的栅格偏移是?,python,matplotlib,Python,Matplotlib,我试图用matplotlib绘制一个随机占用的网格。栅格看起来与块的偏移量是随机的: 代码如下: import matplotlib.pyplot as plt import numpy as np # Make a 10x10 grid... nrows, ncols = 10,10 # Fill the cells randomly with 0s and 1s image = np.random.randint(2, size = (nrows, ncols)) # Make gri
import matplotlib.pyplot as plt
import numpy as np
# Make a 10x10 grid...
nrows, ncols = 10,10
# Fill the cells randomly with 0s and 1s
image = np.random.randint(2, size = (nrows, ncols))
# Make grid
vgrid = []
for i in range(nrows + 1):
vgrid.append((i - 0.5, i - 0.5))
vgrid.append((- 0.5, 9.5))
hgrid = []
for i in range(ncols + 1):
hgrid.append((- 0.5, 9.5))
hgrid.append((i - 0.5, i - 0.5))
row_labels = range(nrows)
col_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'j']
plt.matshow(image, cmap='Greys')
for i in range(11):
plt.plot(hgrid[2 * i], hgrid[2 * i + 1], 'k-')
plt.plot(vgrid[2 * i], vgrid[2 * i + 1], 'k-')
plt.axis([-0.5, 9.5, -0.5, 9.5])
plt.xticks(range(ncols), col_labels)
plt.yticks(range(nrows), row_labels)
plt.show()
当我强制执行绘图区域时,问题似乎发生了;这一行:
plt.axis([-0.5, 9.5, -0.5, 9.5])
另外,请随时提出更好的方法。我是pyplot的新手。您可以使用plt.grid()
来绘制轴网格。不幸的是,它无法解决这个问题。网格未对准是imshow
的一个问题(由matshow
调用的函数)
我建议使用图形大小和网格的线宽,直到得到可以接受的结果
plt.figure(figsize=(5,5));
nrows, ncols = 10,10
image = np.random.randint(2, size = (nrows, ncols))
row_labels = range(nrows)
col_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'j']
plt.matshow(image, cmap='Greys',fignum=1,interpolation="nearest")
#set x and y ticks and labels
plt.xticks(range(ncols), col_labels)
plt.yticks(range(nrows), row_labels);
#set minor axes in between the labels
ax=plt.gca()
ax.set_xticks([x-0.5 for x in range(1,ncols)],minor=True )
ax.set_yticks([y-0.5 for y in range(1,nrows)],minor=True)
#plot grid on minor axes
plt.grid(which="minor",ls="-",lw=2)
这是因为默认情况下,matshow()
使用参数interpolation=“nearest”
调用imshow()
。您应该通过手动重写参数来获得更好的结果:
plt.matshow(image, cmap='Greys', interpolation="none")
实际上,我用“最近的”比“没有”得到了更好的结果,在IPython笔记本中显示内联绘图。我认为这取决于图形的大小以及显示/保存的方式。是的,如果是屏幕别名,则图像越大越好。不知道这是否适用于IPython。这应该通过mpl2.0Thanks的合并来解决,更改网格线的线宽似乎是一个快速而肮脏的解决方案,但如果这是唯一的选项,那么我将尝试接受它。希望这个问题能很快得到解决。