मैं एक का उपयोग करने की कोशिश कर रहा हूँ AxisSubplot
साजिश पर आकृतियों को चित्रित करने के लिए कुछ निर्देशांक निर्देशांक को वास्तविक निर्देशांक में परिवर्तित करने के लिए ऑब्जेक्ट करें। समस्या यह है कि मैं दस्तावेज नहीं ढूंढ सकता या AxisSubplot
कहीं भी , समझा एक्सिस लेकिन यह पता नहीं लगा सकता कि पृथ्वी पर क्या है AxisSubplot
वस्तु।
मेरा प्लॉट निर्देशांक टाइम एक्स Altitude द्वारा प्रदर्शित होते हैं, इसलिए प्रदर्शन बुद्धिमान एक सेट हो सकता है
[ ["03:42:01", 2.3] , ["03:42:06", 3.4] , ...]
मेरे डिस्प्ले फ़ंक्शन में मैं सबप्लॉट की धुरी को इस प्रकार प्रारूपित करता हूं:
fig.get_xaxis().set_major_locator(mpl.dates.AutoDateLocator())
fig.get_xaxis().set_major_formatter(mpl.dates.DateFormatter("%H:%M:%S"))
अब जब मैं उपरोक्त सेट के उदाहरण के लिए बहुभुज प्रदर्शित करना चाहता हूं, तो मैं उस तारीख स्ट्रिंग को कोरिडनेट्स को साजिश में कैसे परिवर्तित कर सकता हूं?
points = [["03:42:01", 1], ["03:43:01", 2.1], ["03:21:01", 1]]
polygon = plt.Polygon(points)
fig.add_patch(polygon)
और निश्चित रूप से यह मुझे त्रुटि देता है ValueError: invalid literal for float(): 03:42:01
। क्या किसी को यह पता चलेगा कि यह कैसे करें? यहां प्लॉट अक्ष की तरह दिखने का एक उदाहरण है:
उत्तर:
जवाब के लिए 3 № 1आपको दो समस्याएं प्रतीत होती हैं:
आप के दस्तावेज नहीं मिल सकते हैं
AxesSubplot
वस्तु।ऐसा इसलिए है क्योंकि यह केवल रनटाइम पर बनाया गया है। यह से विरासत में आता है
SubplotBase
। आपको "अधिक जानकारी मिल जाएगी यह उत्तर (एक ही प्रश्न के लिए)।आप x बहु निर्देशांक के रूप में दिनांक / समय के साथ बहुभुज प्लॉट करना चाहते हैं:
उस matplotlib के लिए यह जानने की जरूरत है कि आपके निर्देशांक दिनांक / समय का प्रतिनिधित्व करते हैं। कुछ साजिश कार्य हैं जो डेटाटाइम ऑब्जेक्ट्स को संभाल सकते हैं (उदा।
plot_date
), लेकिन सामान्य रूप से आपको इसका ख्याल रखना होगा।Matplotlib तारीखों (दिनों की फ्लोटिंग संख्या) के अपने आंतरिक प्रतिनिधित्व का उपयोग करता है, लेकिन इसमें आवश्यक रूपांतरण कार्यों को प्रदान करता है
matplotlib.dates
मॉड्यूल। आपके मामले में आप इसे निम्नानुसार उपयोग कर सकते हैं:import matplotlib.pyplot as plt import numpy as np import matplotlib.dates as mdates from datetime import datetime # your original data p = [["03:42:01", 1], ["03:43:01", 2.1], ["03:21:01", 1]] # convert the points p_converted = np.array([[mdates.date2num(datetime.strptime(x, "%H:%M:%S")), y] for x,y in p]) # create a figure and an axis fig, ax = plt.subplots(1) # build the polygon and add it polygon = plt.Polygon(p_converted) ax.add_patch(polygon) # set proper axis limits (with 5 minutes margins in x, 0.5 in y) x_mrgn = 5/60./24. y_mrgn = 0.5 ax.set_xlim(p_converted[:,0].min() - x_mrgn, p_converted[:,0].max() + x_mrgn) ax.set_ylim(p_converted[:,1].min() - y_mrgn, p_converted[:,1].max() + y_mrgn) # assign date locators and formatters ax.xaxis.set_major_locator(mdates.AutoDateLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S")) # show the figure plt.show()
परिणाम: