2011-10-26 17 views
5

मैं अजगर में एक आकृति फ़ाइल पर एक ताप नक्शा करने की कोशिश कर रहा हूं। मुझे इनमें से कुछ बनाने की ज़रूरत है इसलिए हर बार .shp में पढ़ना नहीं चाहते हैं।एक लाइन ओवरलेइंग matplotlib में एक साजिश पर चयन - दो लाइनों को कैसे प्राप्त करें।

इसके बजाय, मैंने सोचा कि मैं नक्शा सीमाओं का एक रेखा चयन उदाहरण बना सकता हूं और दो छवियों को ओवरले कर सकता हूं। समस्या यह है कि - मुझे दो सही ढंग से लाइन करने के लिए प्रतीत नहीं होता है।

यहां कोड है, जहां लाइनकॉल रेखा चयन वस्तु है।

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.contourf(xi,yi,zi) 
ax.add_collection(linecol, autolim = False) 
plt.show() 

क्या अन्य साजिश के मिलान के लिए लाइनकोल की सीमा तय करने का कोई आसान तरीका है? मेरे पास set_xlim और transforms.box के साथ एक नाटक है, लेकिन इसे प्रबंधित करने के लिए प्रतीत नहीं होता है।

आपकी मदद के लिए बहुत बहुत धन्यवाद!

उत्तर

1

ट्रांसफॉर्म शामिल विभिन्न समन्वय प्रणालियों के कारण मुश्किल हैं। http://matplotlib.sourceforge.net/users/transforms_tutorial.html देखें।

मैं इस तरह के उचित आकार में LineCollection स्केल करने में कामयाब रहा। कुंजी यह जानना था कि LineCollection पर सेट किए गए नए ट्रांसफॉर्म पर मुझे + ax.transData जोड़ने की आवश्यकता है।

from matplotlib import cm 
import matplotlib.pyplot as plt 
import matplotlib.collections as mc 
import matplotlib.transforms as tx 
import numpy as np 

fig = plt.figure() 

# Heat map spans 1 x 1. 
ax = fig.add_subplot(111) 
xs = ys = np.arange(0, 1.01, 0.01) 
zs = np.random.random((101,101)) 
ax.contourf(xs, ys, zs, cmap=cm.autumn) 

lines = mc.LineCollection([[(5,1), (9,5), (5,9), (1,5), (5,1)]]) 
# Shape spans 10 x 10. Resize it to 1 x 1 before applying the transform from 
# data coords to display coords. 
trans = tx.Affine2D().scale(0.1) + ax.transData 
lines.set_transform(trans) 
ax.add_collection(lines) 

plt.show() 

(यहां आउटपुट।: http://i.stack.imgur.com/hDNN8.png पर्याप्त नहीं इनलाइन पोस्ट करने के लिए प्रतिष्ठा) (यदि आप किसी भी एक कलाकार वस्तु पर बदलने के लिए सेट नहीं करते हैं, ax.transData डिफ़ॉल्ट है यह डेटा प्रदर्शन निर्देशांक में निर्देशांक बदल देता है।।) enter image description here

यदि आपको एक्स और वाई पर असमान रूप से अनुवादित या स्केल किए गए आकार की आवश्यकता है, तो इसे संशोधित करना आसान होना चाहिए।

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