我有一组坐标,比如[(2,3),(45,4),(3,65)]
我需要将它们绘制成矩阵,无论如何我可以在matplotlib中执行此操作,因此我希望它具有这种外观http://imgur.com/Q6LLhmk
答案 0 :(得分: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)的相邻方格都将保持并排。
不幸的是,与ax.scatter
不同,使用ax.imshow
需要构建N x N
数组,因此它可能比使用ax.scatter
更耗费内存。但是,除非data
包含非常大的数字,否则这不应成为问题。