我有一组坐标,说[(2,3),(45,4),(3,65)]
我需要将它们绘制为矩阵无论如何我可以在 matplotlib 中执行此操作,所以我希望它具有这种外观http://imgur.com/Q6LLhmk
问问题
1095 次
1 回答
3
编辑:我原来的答案使用ax.scatter
. 这样做有一个问题:如果两个点并排,ax.scatter
可能会在它们之间画出一点空间,具体取决于比例:
例如,与
data = np.array([(2,3),(3,3)])
这是放大的细节:
因此,这是解决此问题的替代解决方案:
import matplotlib.pyplot as plt
import numpy as np
data = np.array([(2,3),(3,3),(45,4),(3,65)])
N = data.max() + 5
# color the background white (1 is white)
arr = np.ones((N,N), dtype = 'bool')
# color the dots black (0)
arr[data[:,1], data[:,0]] = 0
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.imshow(arr, interpolation='nearest', cmap = 'gray')
ax.invert_yaxis()
# ax.axis('off')
plt.show()
无论您放大多少,(2,3) 和 (3,3) 处的相邻方块都将保持并排。
不幸的是,与 using 不同ax.scatter
, usingax.imshow
需要构建一个N x N
数组,因此它可能比 using 更占用内存ax.scatter
。data
但是,除非包含非常大的数字,否则这应该不是问题。
于 2013-02-13T12:51:09.717 回答