दिलचस्प पोस्ट
मैं एक्सएमएल में टैग के एक ब्लॉक को कैसे बताऊँ? "YYYY-MM-DD HH: मिमी" को पार्स करने के दौरान गलत तारीख का समय बनाने के लिए SimpleDateFormat MVC, C # में प्रत्येक अनुरोध में कोई विधि चलाएं? Jboss सर्वर शुरू करने में त्रुटि फॉर्म लोड इवेंट कैसे लाएं (वर्तमान में काम नहीं कर रहा है) कैसे ग्रहण के लिए एक प्लगइन लिखने के लिए? रेल पर रूबी में एक सेटर विधि को ओवरराइड करने का सही तरीका क्या है? एकाधिक कॉलमों पर INNER से जुड़ने के लिए कैसे करें इलेक्ट्रॉन: jQuery परिभाषित नहीं है पीडीओ पैरामाइसेज किए गए प्रश्न – नामित प्लेसहोल्डर? ऑब्जेक्ट ओरिएंटेड प्रतिमान में ढीले युग्मन और तंग युग्मन के बीच अंतर क्या है? बूलियन ऑपरेटर्स बनाम बीटवार ऑपरेटर्स बाकी – JSON के साथ HTTP पोस्ट बहुपंक्ति मैं MySQL में एकाधिक स्तंभों के लिए अद्वितीय बाधा कैसे निर्दिष्ट करूं? # <RSpec :: कोर :: उदाहरण समूह :: नेस्टेड_1: 0x00000106db51f8> के लिए अपरिभाषित विधि `पाने '

Matlotlib में एक दूसरे एक्स-एक्स जोड़ने के लिए

मेरे पास एक बहुत ही सरल सवाल है मुझे अपनी साजिश में दूसरा एक्स-एक्स होना चाहिए और मैं चाहता हूं कि इस धुरी में निश्चित अक्षरों की संख्या होती है जो पहले अक्ष की कुछ स्थिति के अनुरूप होती है।

एक उदाहरण के साथ कोशिश करते हैं। यहां मैं 1 / (1 + z) के रूप में परिभाषित विस्तार कारक के एक कार्य के रूप में काले पदार्थ के द्रव्यमान को साजिश कर रहा हूं, जो कि 0 से 1 के बीच है

semilogy(1/(1+z),mass_acc_massive,'-',label='DM') xlim(0,1) ylim(1e8,5e12) 

मुझे अपनी साजिश के शीर्ष पर एक और एक्स-एक्स होना है, जो विस्तार कारक के कुछ मानों के लिए संबंधित ज़ोन दिखा रहा है। क्या यह संभव है? यदि हां, तो मेरे पास एक्सटिक्स कुल्हाड़ी कैसे हो सकती है

Solutions Collecting From Web of "Matlotlib में एक दूसरे एक्स-एक्स जोड़ने के लिए"

मैं @ धरा के उत्तर में टिप्पणियों से एक क्यू ले रहा हूं, ऐसा लगता है कि आप पुराने एक्स-अक्ष से नए एक्स-अक्ष तक एक फ़ंक्शन द्वारा new_tick_locations सूची सेट करना चाहते हैं। नीचे tick_function अंक के एक numpy सरणी में लेता है, उन्हें एक नए मान के लिए नक्शे और उन्हें प्रारूपित करता है:

 import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(111) ax2 = ax1.twiny() X = np.linspace(0,1,1000) Y = np.cos(X*20) ax1.plot(X,Y) ax1.set_xlabel(r"Original x-axis: $X$") new_tick_locations = np.array([.2, .5, .9]) def tick_function(X): V = 1/(1+X) return ["%.3f" % z for z in V] ax2.set_xlim(ax1.get_xlim()) ax2.set_xticks(new_tick_locations) ax2.set_xticklabels(tick_function(new_tick_locations)) ax2.set_xlabel(r"Modified x-axis: $1/(1+X)$") plt.show() 

यहां छवि विवरण दर्ज करें

आप 2 एक्स-अक्ष स्केल बनाने के लिए जुड़वां का उपयोग कर सकते हैं उदाहरण के लिए:

 import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(111) ax2 = ax1.twiny() a = np.cos(2*np.pi*np.linspace(0, 1, 60.)) ax1.plot(range(60), a) ax2.plot(range(100), np.ones(100)) # Create a dummy plot ax2.cla() plt.show() 

रेफरी: http://matplotlib.sourceforge.net/faq/howto_faq.html#multiple-y-axis-scales

आउटपुट: यहां छवि विवरण दर्ज करें

धरा के जवाब में आपके प्रश्न का उत्तर देते हुए कहते हैं: " मैं दूसरी एक्स-अक्ष इन टिकियों पर चाहूंगा: (7,8,99) एक्स-अक्ष की स्थिति 10, 30, 40 के अनुरूप। क्या यह किसी तरह से संभव है? " हाँ , यह है।

 import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(111) a = np.cos(2*np.pi*np.linspace(0, 1, 60.)) ax1.plot(range(60), a) ax1.set_xlim(0, 60) ax1.set_xlabel("x") ax1.set_ylabel("y") ax2 = ax1.twiny() ax2.set_xlabel("x-transformed") ax2.set_xlim(0, 60) ax2.set_xticks([10, 30, 40]) ax2.set_xticklabels(['7','8','99']) plt.show() 

आपको मिलेगा: यहां छवि विवरण दर्ज करें

यदि आप चाहते हैं कि आपके ऊपरी अक्ष को कम धुरी के टिकटिक मानों का फ़ंक्शन हो:

 import matplotlib.pyplot as plt fig, ax1 = plt.subplots() ax1 = fig.add_subplot(111) ax1.plot(range(5), range(5)) ax1.grid(True) ax2 = ax1.twiny() ax1Xs = ax1.get_xticks() ax2Xs = [] for X in ax1Xs: ax2Xs.append(X * 2) ax2.set_xticks(ax1Xs) ax2.set_xbound(ax1.get_xbound()) ax2.set_xticklabels(ax2Xs) title = ax1.set_title("Upper x-axis ticks are lower x-axis ticks doubled!") title.set_y(1.1) fig.subplots_adjust(top=0.85) fig.savefig("1.png") 

देता है:

यहां छवि विवरण दर्ज करें

मुझे कम प्रतिष्ठा के कारण टिप्पणी के बजाए इसे उत्तर के रूप में पोस्ट करने के लिए मजबूर कर दिया गया है। मैटेओ में मुझे एक ऐसी ही समस्या थी अंतर यह है कि मेरी पहली एक्स-अक्ष से मेरी दूसरी एक्स-अक्ष में कोई मानचित्र नहीं था, केवल खुद को एक्स-वैल्यू इसलिए मैं अपने दूसरे एक्स-एक्स पर डेटा सीधे सेट करना चाहता था, न कि टिक, हालांकि, कोई axes.set_xdata नहीं है axes.set_xdata मैं एक संशोधन के साथ ऐसा करने के लिए धरा के उत्तर का उपयोग करने में सक्षम था:

 ax2.lines = [] 

के बजाय का उपयोग करने का:

 ax2.cla() 

जब प्रयोग में भी मेरी ax1 से मंजूरी दी