2010-12-18 13 views
23

PythonでMatplotlibを使用すると、透明度(アルファベク<)で散布図を作成するだけで、カラー値を表しますが、 1?ここで部分的に透明な散布図ですが、ソリッドカラーバーを使用

from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar()と、1が得るものです:

alt text

カラーバーを非透明にすることができますか?

PS:これは、巨大な、醜いハックです...

+0

しかし、これは散布図であるため、カラーバーはどうしますか?それは各点の大きさ、 's'、または各点の色' c'に対応するでしょうか? –

+0

@スティーブ:カラーバーはポイントの色をマッピングします。 – EOL

答えて

25

さてさて、私は比較的きれいに見える、それを行うための一つの方法を見つけました:(質問からColorBarオブジェクトを使用して)

color_bar.set_alpha(1) 
color_bar.draw_all() 
# pylab.draw() or pyplot.draw() might be necessary 

それを得るために素晴らしいことですただしこれが最も堅牢な方法であることを確認してください! :)

+0

ああ、 'draw_all'です。面白い。 –

+0

カラーバーラベルが必要ない場合はどうすればいいですか? 'draw_all()'は 'color_bar.ax.set_yticklabels([]) 'を設定してもラベルを表示します。 –

+0

私はこれを行う方法がわかりません...最初にカラーバーの軸をクリアしようとしましたが( 'color_bar.ax.cla()')、 'draw_all()'でカラーバーを再び描画すると失敗します。 – EOL

9

を私はcolor_bar.set_alpha(1); draw()を試してみましたが、これは何もしませんでした。しかし、他の方法では動作しません。他の誰かが改善するかもしれない。

fig1 = pylab.figure() 
fig2 = pylab.figure() 
ax1 = fig1.add_subplot(111) 
ax2 = fig2.add_subplot(111) 
ax1.scatter(range(10), range(10), c=range(10), alpha=0.2) 
im = ax2.scatter(range(10), range(10), c=range(10), alpha=1.0) 
fig1.colorbar(im, ax=ax1) 
fig1.show() 

alt text

+0

+1:面白いアイデア! 1つの欠点は、 'pyplot.show()'が呼び出されたときに、追加のFigureを取得することです(おそらく破壊される可能性があります...)。 – EOL

+0

実際、新しい図形が作成されます。それは本当に「最後の手段」の解決策でした。 :-) –

関連する問題