我有一个像这样创建的2D numpy数组:
data = np.empty((number_of_elements, 7))
每行有7个(或其他)浮点数表示对象的属性。例如,前两个是对象的x
和y
位置,其他是可以用于将颜色信息应用于绘图的各种属性。
我想从data
做一个散点图,这样如果p = data[i]
,一个对象被绘制为一个点p[:2]
作为其2D位置并且说p[2:4]
}作为颜色信息(该矢量的长度应确定该点的颜色)。其他栏目根本不重要。
我应该怎么做?
答案 0 :(得分:22)
设置基本的matplotlib图很容易:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
摘下x
,y
和color
的列可能如下所示:
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
答案 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找到了您想要的内容,我可以为您提供更多帮助。