मैटप्ललिब में एक बग (संस्करण <कोड> 1.4.3 ) / पाइपप्लेट जब उप कोड के बीच की रेखा खींचने का प्रयास करते हैं तो set_aspect ("बराबर")
को सेट करने के बाद, यह प्रासंगिक समन्वय परिवर्तन कार्य ( transData ) अद्यतन नहीं करता है।
ax.set_aspect ("बराबर") के साथ नीचे दिए गए कोड को निष्पादित करें
अंतर देखने के लिए असम्मित।
आयात करें matplotlib.pyplot जैसा कि plt आयात matplotlib के रूप में mpl f, (ax1 , Ax2) = कुंडली में (ax1, ax2) के लिए = plt.subplots (1, 2, sharey = 'all', sharex = 'all'): # ax.set_aspect ("बराबर") ax.set_ylim ([-। 2 , 1.2]) ax.set_xlim ([- 2, 1.2]) # से http://stackoverflow.com/questions/17543359/drawing-lines-between-two-plots-in-matplotlib ट्रांसफिगर = f.transFigure.inverted () Coord1 = transfigure.transform (ax1.transData.transform ([0,0])) coord2 = transfigure.transform (ax2.trans.data.transform ([1,0])) पंक्ति = mpl.lines.Line2D ((coord1 [0], समन्वय 2 [0]), (समन्वय 1 [1], समन्वय 2 [1]), ट्रांसफ़ॉर्म = एफ.ट्रांसफ़िगुअर) एफ.लिंस.एपेंड (लाइन) plt.show ()
< P> प्रासंगिक छवियां यहां हैं () और यहां ()।
आपको जो समस्या है वह है कि set_aspect
एक ड्रा ऑपरेशन के बाद तक लागू नहीं होता है। इस प्रकार जब आप रेखा बनाते हैं, तो सीमाएं बदल नहीं रही हैं। आपकी दूसरी छवि में अलग-अलग एक्स सीमाएं देखें, जबकि रेखा एक ही स्थान पर है: रेखा खींची गई है, हालांकि एक्स सीमाएं नहीं बदली हैं, क्योंकि वे अभी तक नहीं बदले हैं, और जब तक कि < कोड> plt.show () । इसका समाधान आपके द्वारा set_aspect
करने के बाद plt.draw ()
जोड़ना है, लेकिन इससे पहले कि आप रूपांतरणों पर काम करना शुरू करें। निम्नलिखित कोड, प्रिंट स्टेटमेंट के साथ करता है जो अलग-अलग समय सीमा के साथ समस्या को स्पष्ट करता है और अलग-अलग समय पर रूपांतरण करता है:
आयात करें matplotlib.pyplot के रूप में plt आयात matplotlib के रूप में mpl f, (ax1, ax2) = Ax.set_ylim ([-।, 2, 1.2]) ax.set_xlim ([- 0.2, = 2, 1.2]) ट्रांसफ़ाइजर = एफ.ट्रांसफिगर करें () प्रिंट ax1.get_xlim (), ax1.transData.transform ([0,0]) में कुल्हाड़ी के लिए (ax1, ax2): ax.set_aspect ('equal') प्रिंट ax1 .get_xlim (), ax1.transData.transform ([0,0]) plt.draw () प्रिंट ax1.get_xlim (), ax1.transData.transform ([0,0]) coord1 = transfigure.transform (ax1.transData .transform ([0,0])) coord2 = transfigure.transform (ax2.transData.transform ([1,0]) लाइन = mpl.lines.Line2D ((coord1 [0], coord2 [0]), ( समन्वय 1 [1], समन्वय 2 [1]), ट्रांसफ़ॉर्म = एफ.ट्रांसफ़िगुअर) एफ.लिंस.एपेंड (लाइन) plt.show ()
इस बिंदु को डॉकस्ट्रिंग में जोड़ा जाना चाहिए Set_aspect के लिए, और मैं देखूंगा कि मैं क्या कर सकता हूं उस। यह एक बग नहीं है: पहलू वास्तव में निर्धारित नहीं किया जा सकता जब तक प्लॉट तैयार होने के लिए तैयार नहीं होता है।
No comments:
Post a Comment