2010-12-18 16 views
23

पाइथन में, मैटलप्लिब के साथ, पारदर्शीता (अल्फा < 1) के साथ स्कैटर प्लॉट कैसे करें, लेकिन रंगीन रंग के साथ जो उनके रंग मान का प्रतिनिधित्व करता है, लेकिन अल्फा = 1?आंशिक रूप से पारदर्शी स्कैटर प्लॉट, लेकिन ठोस रंग बार

यहाँ एक from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar() साथ, हो जाता है क्या है:

alt text

कैसे रंग बार गैर पारदर्शी बनाया जा सकता है?

पुनश्च: मैं color_bar.set_alpha(1); draw() कोशिश की, लेकिन यह कुछ भी नहीं किया ...

+0

लेकिन चूंकि यह एक स्कैटर प्लॉट है, रंगीन बार क्या इंगित करेगा? क्या यह प्रत्येक बिंदु, 's', या प्रत्येक बिंदु का रंग,' c' के आकार के अनुरूप होना चाहिए? –

+0

@ स्टेव: कलर बार अंक के रंग को मैप करेगा। – EOL

उत्तर

25

ठीक है, मैं एक तरह से यह करने के लिए मिल गया है, कि अपेक्षाकृत साफ दिखता है:

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

(सवाल से ColorBar वस्तु का उपयोग कर) यह एक पाने के लिए बहुत अच्छा होगा पुष्टि है कि आगे बढ़ने का यह सबसे मजबूत तरीका है! :)

+0

ओह, 'draw_all'। दिलचस्प। –

+0

क्या होगा यदि मैं कलरबार लेबल नहीं चाहता हूं? 'draw_all()' लेबल को तब भी प्रकट करता है जब मैंने 'color_bar.ax.set_yticklabels ([]) सेट किया है। –

+0

मुझे यकीन नहीं है कि यह कैसे करें ... मैंने कलर बार अक्ष को पहले ('color_bar.ax.cla()') को साफ़ करने का प्रयास किया, लेकिन फिर 'draw_all()' विफल होने के साथ रंगीन चित्र को फिर से खींचना। – EOL

9

यह एक बहुत बड़ा, बदसूरत हैक है। लेकिन कोई और तरीका काम नहीं करेगा। शायद कोई और सुधार कर सकता है।

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

वास्तव में, यह एक नया आंकड़ा बनाता है। वह वास्तव में एक "अंतिम उपाय" समाधान था। :-) –

संबंधित मुद्दे