使用特定列绘制2维NumPy数组

时间:2012-11-29 20:41:05

标签: python numpy matplotlib

我有一个像这样创建的2D numpy数组:

data = np.empty((number_of_elements, 7))

每行有7个(或其他)浮点数表示对象的属性。例如,前两个是对象的xy位置,其他是可以用于将颜色信息应用于绘图的各种属性。

我想从data做一个散点图,这样如果p = data[i],一个对象被绘制为一个点p[:2]作为其2D位置并且说p[2:4] }作为颜色信息(该矢量的长度应确定该点的颜色)。其他栏目根本不重要。

我应该怎么做?

2 个答案:

答案 0 :(得分:22)

设置基本的matplotlib图很容易:

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

摘下xycolor的列可能如下所示:

N = 100
data = np.random.random((N, 7))
x = data[:,0]
y = data[:,1]
points = data[:,2:4]
# color is the length of each vector in `points`
color = np.sqrt((points**2).sum(axis = 1))/np.sqrt(2.0)
rgb = plt.get_cmap('jet')(color)

最后一行检索jet色图,并将数组color中的每个浮点值(0到1之间)映射到3元组RGB值。 有一个可以从here中选择的色彩映射列表。还有一种定义自定义色彩映射的方法。

制作散点图现在很简单:

ax.scatter(x, y, color = rgb)
plt.show()
# plt.savefig('/tmp/out.png')    # to save the figure to a file

enter image description here

答案 1 :(得分:6)

不确定您在绘图中究竟是在寻找什么,但您可以像这样切割2D数组:

>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> a[:,1]
array([1, 4, 7])
>>> a[:,1:3]
array([[1, 2],
       [4, 5],
       [7, 8]])

然后一些matplot来照顾密谋。如果您在Matplotlib Gallery找到了您想要的内容,我可以为您提供更多帮助。