2017-12-20 19 views
0

私はPythonでカスタムアノテーションを使ってカラーグラデーション矩形を作成しようとしています。matplotlibです。以下は、値に基づいて色を割り当てる関数です。私は参照のためのラベルを作成しようとしています(色のために示されたスコアを持つ長方形)。 私はこのようなものを探しています:https://stackoverflow.com/a/25679063/7733184私の色だけでなく、私の機能ごとに示された範囲もあります。カスタム勾配を使用した長方形のカラー塗りつぶしシーケンス

def returncolor(value,colors): 
    if value < 0.55: 
     return '#B03A2E' #darkest red 
    if value < 0.60: 
     return '#EC7063' # light red 
    if value < 0.65: 
     return '#FCF3CF' # lighest yellow 
    if value < 0.70: 
     return '#F1C40F' # yellow 
    if value < 0.75: 
     return '#F39C12' # Orange 
    if value < 0.80: 
     return '#82E0AA'#light green 
    if value < 0.85: 
     return '#28B463'#dark green 
    if value < 0.90: 
     return '#7FB3D5'#light blue 
    if value < 0.95: 
     return '#2980B9'#dark blue 
    if value < 1: 
     return '#5B2C6F'#dark blue 

私がやろうとしています何のモックアップは以下の通りです:the answer to this question 1として

enter image description here

+0

出力にどのように表示されるかを示すために疑問にモックアップイメージを追加することができます。 – pts

+0

@DizietAsahi全く同じではありませんが、これはグラデーションではありません。これらはカスタムカラーです。 –

答えて

1

、あなたはListedColormapオブジェクトを使用してカラーマップ、カスタムを定義することができます。

colors = ['#B03A2E','#EC7063','#FCF3CF','#F1C40F','#F39C12','#82E0AA','#28B463','#7FB3D5','#2980B9','#5B2C6F'] 
bounds = [0.5,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1] 
cmap = matplotlib.colors.ListedColormap(colors) 
norm = matplotlib.colors.BoundaryNorm(bounds, cmap.N) 

zvals = np.random.rand(100, 100) * 10 

# tell imshow about color map so that only set colors are used 
img = plt.imshow(zvals, cmap=cmap, norm=norm) 

# make a color bar 
plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=bounds) 

plt.show() 

enter image description here

the example matplotlibののドキュメントから参照してください。

+0

私は実際には右側の尺度を探していました。 zvalsやランダムなプロットではありません。 –

関連する問題