将坐标绘制为矩阵matplotlib python

时间:2013-02-13 12:30:12

标签: python matplotlib wxpython

我有一组坐标,比如[(2,3),(45,4),(3,65)] 我需要将它们绘制成矩阵,无论如何我可以在matplotlib中执行此操作,因此我希望它具有这种外观http://imgur.com/Q6LLhmk

1 个答案:

答案 0 :(得分:3)

编辑:我的原始答案使用了ax.scatter。这有一个问题:如果两个点是并排的,ax.scatter可能会在它们之间留出一点空间,具体取决于比例:

例如,使用

data = np.array([(2,3),(3,3)])

以下是放大细节:

enter image description here

所以这是解决此问题的替代解决方案:

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()

enter image description here

无论你放大多少,(2,3)和(3,3)的相邻方格都将保持并排。

不幸的是,与ax.scatter不同,使用ax.imshow需要构建N x N数组,因此它可能比使用ax.scatter更耗费内存。但是,除非data包含非常大的数字,否则这不应成为问题。