2

以下のコードで散布図を描画します。

import matplotlib.pyplot as plt

x = [2,4,6]
y = [1,3,7]
r = [650,890,320]
clr = ['r','b','g']
bubble_id = ['C0','C1','C2']

H0 = plt.scatter(x,y,s=r,c=clr)

matplotlib 散布図の泡

'set_gid()'次に、それぞれ3 つの泡にしたいと思い'C0', 'C1' ,'C2'ます。どうやってするか ?H0単一のオブジェクトであるため<matplotlib.collections.PathCollection object at 0x0ADA6D30>、 H0 を分解して H0 の 3 つの「泡の息子」を見つける方法がわかりません。ヒントをありがとう。

4

1 に答える 1

1

だから、それが最も効率的な解決策ではないかもしれないことはわかっていますが、ループについてはどうですか?

import matplotlib.pyplot as plt
import itertools as it

X = [2,4,6]
Y = [1,3,7]
radius = [650,890,320]
clr = ['r','b','g']
bubble_id = ['C0','C1','C2']

ax = plt.subplot(111)
for x, y, r, c, id in it.izip(X, Y, radius, clr, bubble_id):
    ax.scatter(x,y,s=r,c=c, gid=id)

視覚的に同じプロットを提供します。

Ipython でPathCollectionメソッドを調べましたが、そこから単一のパッチを取得する簡単な方法はないようです。

2020年に編集

最近では python 3 を使用している可能性が非常に高いため (使用しない場合でも)、 のzip代わりにビルトインを使用することができitertools.izipます。答えを復活させてくれてありがとう@Guimoute

于 2013-02-04T14:49:14.073 に答える