2017-12-20 12 views
-1

私はいくつかのおもちゃのデータと散布図があります。スキャッタポイントの色を取得

ポイントの色でポイントの隣にラベルを描きたいと思います。

玩具例:

x = 100*np.random.rand(5,1) 
y = 100*np.random.rand(5,1) 
c = np.random.rand(5,1) 

fig, ax = plt.subplots() 
sc = plt.scatter(x, y, c=c, cmap='viridis') 

# I want to annotate the third point (idx=2) 
idx = 2 
ax.annotate("hello", xy=(x[idx],y[idx]), color='green', 
      xytext=(5,5), textcoords="offset points") 
plt.show() 

enter image description here

私は何とかこの点の色を取得し、私は点の色を取得できますかcolor=color_of_the_point

のための私のcolor='green'一部を変更する必要があります散布図?

カラーベクトルcは、カラーマップに変換されます。さらに、正規化やアルファ値などの変更も可能です。

SCは点の座標を取得するための方法があります。

sc.get_offsets() 

だから、また、ポイントの色を取得するためのメソッドを持っているが、私はそのような方法を見つけることができなかった論理的だろう。

+1

StackOverflowのトロールのようになります... –

答えて

2

散布図はPathCollectionで、サブクラスはScalarMappableです。 ScalarMappableは、方法to_rgbaを有する。これは、カラー値に対応するカラーを取得するために使用できます。この場合

質問に使用されるアレイは、通常、望ましくないれ、2Dアレイであること

sc.to_rgba(c[idx]) 

注意。だから、完全な例は、完全に有効な質問をdownvoting

import matplotlib.pyplot as plt 
import numpy as np 

x = 100*np.random.rand(5) 
y = 100*np.random.rand(5) 
c = np.random.rand(5) 

fig, ax = plt.subplots() 
sc = plt.scatter(x, y, c=c, cmap='viridis') 

# I want to annotate the third point (idx=2) 
idx = 2 
ax.annotate("hello", xy=(x[idx],y[idx]), color=sc.to_rgba(c[idx]), 
      xytext=(5,5), textcoords="offset points") 
plt.show() 

enter image description here

関連する問題