2011-04-06 10 views
5

के साथ कंटूर प्लॉट मैं कुछ डेटा का समोच्च साजिश बनाना चाहता हूं, लेकिन यह संभव है कि फ़ील्ड में सभी मान एक ही मूल्य पर हों। यह matplotlib में एक त्रुटि का कारण बनता है, जो समझ में आता है क्योंकि वास्तव में एक समोच्च बनने के लिए नहीं है। उदाहरण के लिए, यदि आप नीचे दिए गए कोड को चलाते हैं, तो आपको एक त्रुटि मिलेगी, लेकिन zi की दूसरी परिभाषा को हटाएं और यह अपेक्षित के रूप में चलता है।Matplotlib - सिंगल वैल्यू

यदि यह एक समान क्षेत्र है तो मैं कुछ डेटा के लिए "समोच्च" साजिश कैसे बना सकता हूं? मैं इसे नियमित रूप से समोच्च साजिश की तरह दिखाना चाहता हूं (कुछ रंग से भरा बॉक्स रखना और किनारे पर रंगीन बार दिखाना। रंग बार एक समान रंग हो सकता है, या फिर भी 15 रंगों की एक श्रृंखला दिखा सकता है, मैं नहीं करता परवाह नहीं है)।

कोड:

from numpy  import array 
import matplotlib.pyplot as plt 

xi = array([0., 0.5, 1.0]) 
yi = array([0., 0.5, 1.0]) 
zi = array([[0., 1.0, 2.0], 
      [0., 1.0, 2.0], 
      [0., 1.0, 2.0]]) 
zi = array([[1.0, 1.0, 1.0], 
      [1.0, 1.0, 1.0], 
      [1.0, 1.0, 1.0]]) 

CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 
plt.colorbar() 
plt.show() 

उत्तर

10

खैर, contourf यह पूरी तरह संभालती है, यह contour कि chokes है।

क्यों नहीं सिर्फ इस कार्य करें:

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.ones((3,3)) 

try: 
    CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
except ValueError: 
    pass 
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 

plt.colorbar() 
plt.show() 

इस तरह, आप एक भरा (हरा, डिफ़ॉल्ट रूप से) एक समान क्षेत्र है, और लाइनों के साथ एक भरा समोच्च साजिश अन्यथा यदि मिलेगा बॉक्स।

enter image description here