2016-04-22 8 views
3

カラーサイクルを既存のカラーマップと一致するように設定することはできますが、この質問は色サイクルから定性的なカラーマップを作成する方法を尋ねています。matplotlibのカラーサイクルをカラーマップとして使用

私の具体的なケースでは、整数クラスラベルの配列が関連付けられた散布図があります。私の現在のプロットは次のようになります。あなたが見ることができるように、これはきれいにクラスを区別するのは素晴らしい仕事をしません

x,y = np.random.normal(size=(2,250)) 
theta = np.arctan2(y,x) 
c = np.digitize(theta, np.histogram(theta)[1]) 
plt.scatter(x,y,c=c) 

current scatter plot

。代わりに、ラベルicolor_cycle[i]に対応する現在のカラーサイクルに一致するカラーマップをどういうわけかプラグインしたいと思います。カラーサイクルに色が付いているよりも多くのクラスを持っているなら、それは問題ありません。通常のようにラップアラウンドする必要があります。

答えて

1

私は現在の色サイクルを得るためのパブリックAPIがあるとは思いませんが、set_prop_cycleを模倣することにより、あなたがget_prop_cycleこのよう定義することができます:あなたはprop_cyclerの色を持っていたら

rcParams = plt.matplotlib.rcParams 
def get_prop_cycle(): 
    prop_cycler = rcParams['axes.prop_cycle'] 
    if prop_cycler is None and 'axes.color_cycle' in rcParams: 
     clist = rcParams['axes.color_cycle'] 
     prop_cycler = cycler('color', clist) 
    return prop_cycler 

を、あなたは色のサイクルでカラーにcをマッピングすることができます

colors = [item['color'] for item in get_prop_cycle()] 
c = np.take(colors, c, mode='wrap') 

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.rcsetup import cycler 

np.random.seed(2016) 

rcParams = plt.matplotlib.rcParams 
def get_prop_cycle(): 
    prop_cycler = rcParams['axes.prop_cycle'] 
    if prop_cycler is None and 'axes.color_cycle' in rcParams: 
     clist = rcParams['axes.color_cycle'] 
     prop_cycler = cycler('color', clist) 
    return prop_cycler 

fig, ax = plt.subplots(nrows=2) 
x,y = np.random.normal(size=(2,250)) 
theta = np.arctan2(y,x) 
c = np.digitize(theta, np.histogram(theta)[1]) 

ax[0].scatter(x,y,c=c) 
ax[0].set_title('using default colormap') 

colors = [item['color'] for item in get_prop_cycle()] 
c = np.take(colors, c, mode='wrap') 

ax[1].scatter(x,y,c=c) 
ax[1].set_title('using color cycle') 
plt.show() 

enter image description here

+0

ありがとう、これは私が必要とするものです!サイクル/アイリスコンボの代わりに、 'c = np.take(colors、c、mode = 'wrap')'を使う方が少しシンプルであることがわかりました。 – perimosocordiae

+0

@perimosocordiae:大きな改善をありがとう。 – unutbu

関連する問題