23

次のように作成された2Dnumpy配列があります。

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

7(またはその他)の浮動小数点数を持つ各行は、オブジェクトのプロパティを表します。たとえば、最初の2つはオブジェクトのxy位置であり、他の2つは、プロットに色情報を適用するために使用できるさまざまなプロパティです。

から散布図を作成したいdataので、の場合p = data[i]、オブジェクトはp[:2]2D位置p[2:4]として、たとえば色情報として点としてプロットされます(そのベクトルの長さが点の色を決定する必要があります)。他の列は、プロットにはまったく関係ありません。

これについてはどうすればよいですか?

4

2 に答える 2

28

基本的な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カラーマップを取得し、配列内の各float値(0から1の間)をcolor3タプルRGB値にマップします。ここから選択できるカラーマップのリストがあります。カスタムカラーマップを定義する方法もあります。

散布図の作成は簡単です。

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

ここに画像の説明を入力してください

于 2012-11-29T20:59:40.563 に答える
11

プロットで何を探しているのか正確にはわかりませんが、次のように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]])

次に、プロットの世話をするためのいくつかのマットプロット。Matplotlib Galleryで探しているものが見つかった場合は、さらにサポートさせていただきます。

于 2012-11-29T20:47:26.597 に答える