tam*_*cun 17 python numpy matplotlib
我有一个像这样创建的2D numpy数组:
data = np.empty((number_of_elements, 7))
Run Code Online (Sandbox Code Playgroud)
每行有7个(或其他)浮点数表示对象的属性.前两个例如是x和y对象的位置,其他都是甚至可以用来颜色信息适用于情节的各种属性.
我想做一个散点图data,这样,如果p = data[i],一个对象被绘制为一个点p[:2]作为其2D位置,并且比如p[2:4]作为颜色信息(该矢量的长度应该确定该点的颜色).其他列根本不应该与情节有关.
我该怎么办呢?
unu*_*tbu 24
设置一个基本的matplotlib图很容易:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
Run Code Online (Sandbox Code Playgroud)
摘为列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)
Run Code Online (Sandbox Code Playgroud)
最后一行检索jetcolormap并将数组color中的每个float值(0到1之间)映射到3元组RGB值.有可供选择色彩映射列表在这里.还有一种定义自定义色彩映射的方法.
制作散点图现在很简单:
ax.scatter(x, y, color = rgb)
plt.show()
# plt.savefig('/tmp/out.png') # to save the figure to a file
Run Code Online (Sandbox Code Playgroud)

不确定你在绘图中究竟要找什么,但你可以像这样切割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]])
Run Code Online (Sandbox Code Playgroud)
然后一些matplot来照顾密谋.如果您在Matplotlib画廊找到了您想要的东西,我可以为您提供更多帮助.
| 归档时间: |
|
| 查看次数: |
74141 次 |
| 最近记录: |