2014-09-22 10 views
17

में वैज्ञानिक नोटेशन कलरबार मैं matplotlib का उपयोग कर अपनी छवि में एक कलरबार डालने की कोशिश कर रहा हूं। मुद्दा तब आता है जब मैं वैज्ञानिक नोटेशन में टिकलबेल को लिखने की कोशिश करता हूं। कलर बार की टिकों में मैं वैज्ञानिक नोटेशन (यानी, 1x10^0, 2x10^0, ..., 1x10^2, और इसी तरह) को कैसे मजबूर कर सकता हूं?matplotlib

import matplotlib as plot 
import numpy as np 

img = np.random.randn(300,300) 
myplot = plt.imshow(img) 
plt.colorbar(myplot) 
plt.show() 

जब मैं ऐसा करते हैं, मैं निम्नलिखित छवि प्राप्त:

image created with the previous code

हालांकि, मैं चाहते हैं

उदाहरण के लिए, के बना सकते हैं और साजिश और उसका रंग पट्टी के साथ छवि जाने वैज्ञानिक नोटेशन में टिकलबेल देखें ... क्या ऐसा करने के लिए कोई भी लाइन कमांड है? अन्यथा, क्या वहां कोई संकेत है? धन्यवाद!

उत्तर

25

आप colorbar's format parameter इस्तेमाल कर सकते हैं:

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.ticker as ticker 

img = np.random.randn(300,300) 
myplot = plt.imshow(img) 

def fmt(x, pos): 
    a, b = '{:.2e}'.format(x).split('e') 
    b = int(b) 
    return r'${} \times 10^{{{}}}$'.format(a, b) 

plt.colorbar(myplot, format=ticker.FuncFormatter(fmt)) 
plt.show() 

enter image description here

+0

धन्यवाद, लेकिन मैं देखना चाहेंगे 10^1 ई^01, ई + 02 की बजाय 10^2, आदि। क्या यह संभव है? – Alejandro

+1

लेटेक्स का उपयोग करके वैज्ञानिक नोटेशन दिखाने के लिए मैंने आपके कोड को थोड़ा सा संशोधित किया है। आपका बहुत बहुत धन्यवाद! आप समाधान बहुत उपयोगी और वास्तव में बहुत दिलचस्प है। – Alejandro

+0

सुधार के लिए धन्यवाद। – unutbu

19

आप colorbar का स्वरूप इस प्रकार है टिक्स निर्दिष्ट कर सकते हैं:

pl.colorbar(myplot, format='%.0e') 
+1

धन्यवाद, लेकिन मैं ई +01, ई + 02 की बजाय 10^1 10^2, आदि देखना चाहता हूं। क्या यह संभव है? – Alejandro