2012-10-05 10 views
91

का उपयोग कर मैं एक ही ग्राफ twiny के रूप में उपयोग करने पर दो अलग-अलग मात्रा में प्लॉट करने के लिए कोशिश कर रहा हूँ कुल्हाड़ियों लेबल ओवरलैप होता है:अजगर matplotlib आंकड़ा शीर्षक इस प्रकार जब twiny

fig = figure() 
ax = fig.add_subplot(111) 
ax.plot(T, r, 'b-', T, R, 'r-', T, r_geo, 'g-') 
ax.set_yscale('log') 
ax.annotate('Approx. sea level', xy=(Planet.T_day*1.3,(Planet.R)/1000), xytext=(Planet.T_day*1.3, Planet.R/1000)) 
ax.annotate('Geostat. orbit', xy=(Planet.T_day*1.3, r_geo[0]), xytext=(Planet.T_day*1.3, r_geo[0])) 
ax.set_xlabel('Rotational period (hrs)') 
ax.set_ylabel('Orbital radius (km), logarithmic') 
ax.set_title('Orbital charts for ' + Planet.N, horizontalalignment='center', verticalalignment='top') 


ax2 = ax.twiny() 
ax2.plot(v,r,'k-') 
ax2.set_xlabel('Linear speed (ms-1)') 

show() 

और डेटा ठीक प्रस्तुत किया है, लेकिन मैं समस्या हो रही है कि आंकड़ा शीर्षक द्वितीयक एक्स अक्ष पर धुरी लेबल के साथ ओवरलैप कर रहा है ताकि यह मुश्किल से सुगम हो (मैं यहां एक चित्र उदाहरण पोस्ट करना चाहता था, लेकिन मेरे पास अभी तक पर्याप्त उच्च प्रतिनिधि नहीं है)।

मैं जानना चाहता हूं कि शीर्षक को केवल कुछ दस पिक्सल तक सीधे स्थानांतरित करने का एक सीधा तरीका है, ताकि चार्ट सुंदर दिखता हो।

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! यदि आप अपनी तस्वीर के एक imgur पोस्टिंग से लिंक करते हैं तो एक उच्च प्रतिनिधि उपयोगकर्ता आपके लिए आपकी पोस्ट में छवि को एम्बेड करेगा। – Hooked

+0

@ मैजिक - क्या आप इस प्रश्न के लिए स्वीकार करने के लिए किस जवाब पर पुनर्विचार करेंगे? Matplotlib ने इस सटीक आवश्यकता को संभालने के लिए एक अंतर्निहित तंत्र जोड़ा है (नीचे सबसे अधिक वोट दिया गया जवाब) –

उत्तर

169

मुझे यकीन है कि क्या यह matplotlib के बाद के संस्करणों में एक नई सुविधा है नहीं कर रहा हूँ, लेकिन कम से कम 1.3.1 के लिए, यह बस है: एक से अधिक अतिरंजित उदाहरण नीचे दिया गया है

plt.title(figure_title, y=1.08) 

यह भी आदि plt.xlabel() के लिए plt.suptitle() के लिए काम करता है, लेकिन (अभी तक) नहीं,

+6

लेबल के लिए आप तर्क' लेबलपैड 'सेट कर सकते हैं, [यहां] देखें (http://stackoverflow.com/a/6406750/692634)। –

+1

इसके लायक होने के लिए, यह एक नई सुविधा नहीं है। 'शीर्षक' ने बहुत लंबे समय तक 'x' और 'y' तर्क लिया है (जब तक मुझे याद है, किसी भी दर पर)। –

+0

यह स्वीकार्य सही उत्तर – dashesy

29

plt.title का उपयोग भूल जाएं और टेक्स्ट को सीधे plt.text पर रखें।

import pylab as plt 

fig = plt.figure(figsize=(5,10)) 

figure_title = "Normal title" 
ax1 = plt.subplot(1,2,1) 

plt.title(figure_title, fontsize = 20) 
plt.plot([1,2,3],[1,4,9]) 

figure_title = "Raised title" 
ax2 = plt.subplot(1,2,2) 

plt.text(0.5, 1.08, figure_title, 
     horizontalalignment='center', 
     fontsize=20, 
     transform = ax2.transAxes) 
plt.plot([1,2,3],[1,4,9]) 

plt.show() 

enter image description here

+0

इसके लिए धन्यवाद, मुझे लगता है कि यह मेरी समस्या हल हो गई है! –

+0

दो दिनों में @ हुक्ड द्वारा हल की गई दो समस्याएं ... धन्यवाद –

+0

यह 'tight_layout' के साथ संयोजन में अच्छी तरह से काम नहीं कर रहा है .. –

1
ax.set_title('My Title\n', fontsize="15", color="red") 
plt.imshow(myfile, origin="upper") 

यदि आप अपनी शीर्षक स्ट्रिंग के ठीक बाद '\n' डालते हैं, तो साजिश शीर्षक के ठीक नीचे खींची जाती है। यह भी एक तेज समाधान हो सकता है।

+0

यह मेरे लिए काम नहीं किया – bgenchel

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