में कच्चे डेटा का प्रतिनिधित्व करने वाले कलरबार के साथ लॉग-सामान्यीकृत इम्शो प्लॉट कैसे खींच सकता हूं, मैं लॉग-सामान्यीकृत छवियों को साजिश करने के लिए matplotlib का उपयोग कर रहा हूं लेकिन मैं मूल कच्चे छवि डेटा को रंगीन में प्रदर्शित करना चाहता हूं [0-1] अंतराल। मुझे लगता है कि कुछ प्रकार के सामान्यीकरण ऑब्जेक्ट का उपयोग करके और डेटा को पहले से नहीं बदलकर ऐसा करने का एक और matplotlib'y तरीका है ... किसी भी मामले में, कच्चे चित्र में नकारात्मक मान हो सकते हैं।मैं matplotlib
import matplotlib.pyplot as plt
import numpy as np
def log_transform(im):
'''returns log(image) scaled to the interval [0,1]'''
try:
(min, max) = (im[im > 0].min(), im.max())
if (max > min) and (max > 0):
return (np.log(im.clip(min, max)) - np.log(min))/(np.log(max) - np.log(min))
except:
pass
return im
a = np.ones((100,100))
for i in range(100): a[i] = i
f = plt.figure()
ax = f.add_subplot(111)
res = ax.imshow(log_transform(a))
# the colorbar drawn shows [0-1], but I want to see [0-99]
cb = f.colorbar(res)
मैं cb.set_array का उपयोग कर की कोशिश की है, लेकिन वह कुछ भी, और cb.set_clim करने के लिए प्रकट नहीं किया था, लेकिन वह पूरी तरह से रंग rescales।
तो जाहिरा तौर पर मैं एक सामान्य उदाहरण imshow में पारित कर सकते हैं और छवि मेरे लिए सामान्य हो जाएगा: आपको लगता है कि समारोह cmap_map() रसोई की किताब में दी गई साथ क्या कर सकते रेस = ax.imshow (आईएम, के आदर्श = mpl.colors.LogNorm()) फिर भी, अगर मैं एक कलरबार संलग्न करता हूं, तो कच्चे डेटा के बजाय मान सामान्यीकृत vals पर सेट होते हैं। –