2012-10-06 10 views
12

के लिए एक सफेद दिखाता है मैं मैटलैब से पायथन तक जा रहा हूं और इम्शो फ़ंक्शन के साथ खेल रहा हूं।imshow (img, cmap = cm.gray) 128 मान

मुझे लगता है कि यह मेरे सिर को चारों ओर क्यों नहीं दिख रहा है कि यह 128 के रूप में ग्रे के रूप में क्यों नहीं दिखाता है, मैंने cmap को ग्रे-स्केल होने के लिए चुना है।

Code example

ऐसा लगता है के रूप में यह ग्रेस्केल उच्चतम के लिए (128) और सबसे कम मूल्यों का उपयोग करता है .. मैं इसे [0: 255] के लिए ग्रेस्केल उपयोग करना चाहते हैं। मैं उसको कैसे करू?

उत्तर

23

उपयोग vmin और vmax पैरामीटर:

plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255) 

vmin और vmax, plt.imshow मिनट और डेटा की अधिकतम करने के लिए अपनी सीमा ऑटो समायोजित कर देता है निर्दिष्ट किए बिना।


मैं डिफ़ॉल्ट vmin और सभी imshow भूखंडों के लिए vmax पैरामीटर सेट के लिए एक रास्ता के बारे में पता नहीं है, लेकिन आप functools.partial इस्तेमाल कर सकते हैं सेट डिफ़ॉल्ट पैरामीटर के साथ एक कस्टम imshow की तरह आदेश तैयार करने के लिए:

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

bwimshow = functools.partial(plt.imshow, vmin=0, vmax=255, 
          cmap=plt.get_cmap('gray')) 

dots = np.random.randn(10, 10)*255 
bwimshow(dots) 
cbar = plt.colorbar() 

plt.show() 
+0

आपका बहुत बहुत धन्यवाद! :-) - क्या सभी भूखंडों के लिए डिफ़ॉल्ट मान के रूप में सेट करने का कोई तरीका है? – Norfeldt

+2

हां, 'functools.partial' का उपयोग कर। ऊपर देखो। – unutbu

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