pyplot

2013-12-18 2 views
8

में दो तीन उप-स्थानों के साथ एक याक्सिस लेबल साझा करना मेरे पास निम्नलिखित कोड है जो दिखाए गए साजिश का उत्पादन करता है।pyplot

mport matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
import numpy as np 

One = range(1,10) 
Two = range(5, 14) 
l = len(One) 
fig = plt.figure(figsize=(10,6)) 
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3]) 

ax0 = plt.subplot(gs[0]) 
ax0.bar(range(l), Two) 
plt.ylabel("Number of occurrence") 

ax1 = plt.subplot(gs[1], sharey=ax0) 
ax1.bar(range(l), Two) 

ax2 = plt.subplot(gs[2]) 
ax2.bar(range(l), One) 

plt.show() 

enter image description here

मैं ylabel ("घटना की संख्या") पहले और दूसरे भूखंड के बीच साझा करना चाहते हैं, वह है, यह केंद्र में घटित होता है तो पहली और दूसरी साजिश के छोड़ दिया है। मैं उसको कैसे करू?

+0

अंग्रेजी सुधार: आप मतलब है "आवृत्तियां की संख्या"? – kd88

उत्तर

0

एक बहुत ही परिष्कृत समाधान नहीं है, लेकिन क्या यह काम करेगा?

plt.ylabel("Number of occurrence", verticalalignment = 'top') 

[संपादित करें]

64 बिट अजगर (2.7.3) के अपने संस्करण के लिए

साथ

plt.ylabel("Number of occurrence") 

बदलें मैं एक छोटा सा परिवर्तन बनाने के लिए आवश्यक

plt.ylabel("Number of occurrence", horizontalalignment = 'right') 

यहां यह मेरे जैसा दिखता है, क्या यह आप नहीं चाहते हैं?

enter image description here

+0

यह लेबल को पहले दो भूखंडों के केंद्र में नहीं रखता है। – DurgaDatta

+0

@ दुर्गाडाटा मैंने जोड़ा है कि छवि मेरे कंप्यूटर पर कैसी दिखती है, क्या यह आवश्यकता है? – Brad

+0

यह मेरा काम करेगा। हालांकि, मुझे अपनी मशीन में इस तरह की छवि नहीं मिलती है। आप उस रेखा को कहां डालते हैं? क्या इससे कोई फर्क पड़ता है? – DurgaDatta

0

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

लिंक: अन्य संबंधित सवाल का Using Multiple Axis

लिंक है: multiple axis in matplotlib with different scales

3

सबसे अच्छा तरीका है मैं के बारे में सोच सकते हैं आंकड़ा ही है और स्थिति के लिए पाठ जोड़ने के लिए है यह केंद्र (आंकड़ा 0.5 का समन्वय करता है) तो

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
import numpy as np 

One = range(1,10) 
Two = range(5, 14) 
l = len(One) 
fig = plt.figure(figsize=(10,6)) 
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3]) 

ax0 = plt.subplot(gs[0]) 
ax0.bar(range(l), Two) 

ax1 = plt.subplot(gs[1], sharey=ax0) 
ax1.bar(range(l), Two) 

ax2 = plt.subplot(gs[2]) 
ax2.bar(range(l), One) 

fig.text(0.075, 0.5, "Number of occurrence", rotation="vertical", va="center") 

plt.show() 
0

तरह से आप मैन्युअल रूप से स्थिति को समायोजित कर सकते हैं, 012 की y पैरामीटर का उपयोग:

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
import numpy as np 

One = range(1,10) 
Two = range(5, 14) 
l = len(One) 
fig = plt.figure(figsize=(10,6)) 
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3]) 

ax0 = plt.subplot(gs[0]) 
ax0.bar(range(l), Two) 
plt.ylabel("Number of occurrence", y=-0.8)   ## ← ← ← HERE 

ax1 = plt.subplot(gs[1], sharey=ax0) 
ax1.bar(range(l), Two) 

ax2 = plt.subplot(gs[2]) 
ax2.bar(range(l), One) 

plt.show() 

enter image description here

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