2013-03-07 8 views
19

सेट करना मैं matplotlib colorbar रेंज सेट करना चाहता हूं। यहां मेरे पास अब तक है:मैटलप्लिब कलरबार रेंज

import numpy as np 
import matplotlib.pyplot as plt 
x = np.arange(20) 
y = np.arange(20) 
data = x[:-1,None]+y[None,:-1] 

fig = plt.gcf() 
ax = fig.add_subplot(111) 

X,Y = np.meshgrid(x,y) 
quadmesh = ax.pcolormesh(X,Y,data) 
plt.colorbar(quadmesh) 

#RuntimeError: You must first define an image, eg with imshow 
#plt.clim(vmin=0,vmax=15) 

#AttributeError: 'AxesSubplot' object has no attribute 'clim' 
#ax.clim(vmin=0,vmax=15) 

#AttributeError: 'AxesSubplot' object has no attribute 'set_clim' 
#ax.set_clim(vmin=0,vmax=15) 

plt.show() 

मैं यहां कलरबार सीमा कैसे सेट करूं?

उत्तर

24

Arg। यह हमेशा आखिरी चीज है जो आप कोशिश करते हैं:

quadmesh.set_clim(vmin=0, vmax=15) 

काम करता है।

+6

मैं वास्तव में यह एपीआई वास्तव में कैसे काम करता है इस बारे में गहरी समझ हासिल करना चाहता हूं। अगर कोई मुझे बता सकता है कि 'ax.set_xlim' क्यों काम करता है लेकिन 'ax.set_clim' एपीआई स्टैंडपॉइंट से काम नहीं करता है, तो मुझे सुनना अच्छा लगेगा (और मुझे यकीन है कि दूसरों को इससे बेहतर जवाब मिल सकते हैं - तो कृपया अगर आप कर सकते हैं तो अधिक बताएं!) – mgilson

+4

मुझे यकीन नहीं है कि यह आपके प्रश्न का उत्तर देता है, लेकिन यदि आप 'क्वाडमेश .__ कक्षा __। Mro()' देखते हैं तो आप देखेंगे कि क्वाडमेश की कक्षा में 'स्कालर मैप्टेबल' मिश्रण है । यदि आप 'matplotlib/cm.py' में देखते हैं, तो आप देखेंगे कि यह 'स्कालर मैप्टेबल' मिश्रण है जो कॉलमैपिंग को संभालता है, और विशेष रूप से, यह 'set_clim' विधि प्रदान करता है। – unutbu

+3

प्रत्येक (स्केलर मैप्टेबल) कलाकार अपने रंग को नियंत्रित करता है। कलरबार एक स्कालर मैप्टेबल से जुड़ा हुआ है ('plt.colorbar (quadmesh) 'कॉल द्वारा)। तो कलाकार का कॉलमैपिंग कलरबार के कॉलमैपिंग को नियंत्रित करता है। यह एक्सिस-चौड़ा कॉलमैपिंग नहीं है। इस प्रकार, 'ax' ने 'set_clim' विशेषता नहीं दी है। – unutbu

4

Matplotlib 1.3.1 - ऐसा लगता है कि कलरबार टिक्स केवल तब खींचे जाते हैं जब कलरबार इंस्टाल किया जाता है। कलरबार सीमाएं (set_clim) को बदलने से टिक्स को फिर से खींचा नहीं जा सकता है।

मुझे मिला समाधान मुझे मूल रंगीन के रूप में एक ही धुरी प्रविष्टि में रंगीन बार फिर से उदाहरण देना था। इस मामले में, अक्ष [1] मूल रंगीन था। इस रंग के साथ cax = (बाल अक्ष) kwarg के साथ नामित रंग पट्टी का एक नया उदाहरण जोड़ा गया।

  # Reset the Z-axis limits 
      print "resetting Z-axis plot limits", self.zmin, self.zmax 
      self.cbar = self.fig.colorbar(CS1, cax=self.fig.axes[1]) # added 
      self.cbar.set_clim(self.zmin, self.zmax) 
      self.cbar.draw_all() 
संबंधित मुद्दे