2010-12-18 7 views
23

Matplotlib를 사용하여 Python에서 투명도 (알파 < 1)를 사용하여 산점도를 간단히 지정하지만 색상 값은 나타내지 만 알파 = 1? 여기부분 투명한 산점도 단색 막대가 있습니다.

하나가 from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar()으로 가져옵니다 무엇 :

alt text

어떻게 색상 막대가 불투명 할 수 있습니까? PS

: 나는 color_bar.set_alpha(1); draw()을 시도했지만이

+0

하지만 분산 형 플롯이므로 색상 막대는 무엇을 나타 냅니까? 각 점의 크기,'s' 또는 각 점의 색상'c'에 대응해야합니까? –

+0

@ 스티브 : 컬러 바가 포인트의 색상을 매핑합니다. – EOL

답변

25

좋아, 나는 비교적 깨끗한 보이는 그 방법을 발견 그래도 이것이 가장 강력한 방법이라고 확신합니다! :)

+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) 
color_bar.draw_all() 
# pylab.draw() or pyplot.draw() might be necessary 

(질문에서 ColorBar 개체를 사용하여) :

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 : 재미있는 아이디어! 한가지 단점은'pyplot.show()'가 호출 될 때 (수치는 틀림없이 파괴 될 수 있음) 추가 숫자를 얻는 것입니다. – EOL

+0

실제로 새로운 그림이 생성됩니다. 그것은 실제로 "마지막 수단"해결책이었습니다. :-) –

관련 문제