matplotlib में y- अक्ष सीमा सेट करना


416

मुझे matplotlib पर y- अक्ष की सीमा निर्धारित करने में सहायता की आवश्यकता है। यहाँ वह कोड है जो मैंने कोशिश की, असफल।

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C', 
     marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))

इस प्लॉट के लिए मेरे पास मौजूद डेटा के साथ, मुझे 20 और 200 की y- एक्सिस सीमाएँ मिलती हैं। हालाँकि, मुझे लिमिट्स 20 और 250 चाहिए।


1
अगर मैं plt.show()प्लॉट दिखाने के लिए अंत में जोड़ता हूं तो मेरे लिए माटापोट्लिब 1.0.0 के साथ काम करता है । आप किस संस्करण और किस बैकेंड का उपयोग कर रहे हैं?
तमसे

14
मेरे लिए Matplotlib 0.98.5.2, पायथन 2.6.2 के साथ काम करना। मैंने कोशिश की दोनों plt.ylim((25,250))और plt.ylim(ymax = 250, ymin = 25)। मैं Aggबैकएंड का उपयोग कर रहा हूं ।
मनोज गोविंदन

1
आप दोनों को धन्यवाद। क्या यह आपके लिए पीडीएफ बैकएंड के साथ काम करता है।
जिज्ञासु २

1
नोट: axisbgअब पदावनत किया गया है
शेरलहोमन

जवाबों:


616

इसे इस्तेमाल करे । सबप्लॉट के लिए भी काम करता है।

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])

201
BTW, यह एक मूर्खतापूर्ण संक्षिप्त नाम है जिसका अर्थ है " g et the c urrent a xes"।
लेनार होयट

32
आप एक मान भी निर्धारित कर सकते हैं Noneजो गणना को matplotlib पर छोड़ देता है, जैसेaxes.set_ylim([ymin,None])
linqu

129

आपका कोड मेरे लिए भी काम करता है। हालाँकि, प्लॉट की धुरी पाने के लिए एक और वर्कअराउंड हो सकता है और उसके बाद केवल y- वैल्यूज़ बदल सकते हैं:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))


1
आप बस X1 और x2 कोई भी सेट कर सकते हैं।
हेलके वालिंगा

78

एक चीज जो आप कर सकते हैं, वह है कि आप अपने मैट्रिक्स रेंज को matplotlib.pyplot.axis का उपयोग करके सेट करें।

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

0,10 x अक्ष सीमा के लिए है। 0,20 y अक्ष सीमा के लिए है।

या आप matplotlib.pyplot.xlim या matplotlib.pyplot.ylim का भी उपयोग कर सकते हैं

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)

24

आप किसी ऑब्जेक्ट को तुरंत matplotlib.pyplot.axesकॉल कर सकते हैं और उस set_ylim()पर कॉल कर सकते हैं। यह कुछ इस तरह होगा:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

16

यह कम से कम matplotlib संस्करण 2.2.2 में काम करता है:

plt.axis([None, None, 0, 100])

संभवतः यह एक अच्छा तरीका है उदाहरण के लिए स्थापित करने के लिए xmin और ymax, आदि।


14

@ हेमा के उत्तर में जोड़ने के लिए, यदि आप वर्तमान x या y सीमा को संशोधित करना चाहते हैं तो आप निम्नलिखित का उपयोग कर सकते हैं।

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

मुझे यह विशेष रूप से उपयोगी लगता है जब मैं डिफ़ॉल्ट प्लॉट सेटिंग्स से बस थोड़ा ज़ूम आउट या ज़ूम करना चाहता हूं।


7

यह काम करना चाहिए। आपका कोड मेरे लिए काम करता है, जैसे तमसे और मनोज गोविंदन। ऐसा लगता है कि आप Matplotlib को अपडेट करने का प्रयास कर सकते हैं। यदि आप Matplotlib को अपडेट नहीं कर सकते हैं (उदाहरण के लिए यदि आपके पास अपर्याप्त प्रशासनिक अधिकार हैं), तो शायद एक अलग बैकएंड का उपयोग matplotlib.use()करने में मदद मिल सकती है।


जाँच के लिए धन्यवाद! मैं पीडीएफ बैकएंड ( matplotlib.use('PDF')) का उपयोग कर रहा हूं । मैं उस संस्करण का उपयोग कर रहा हूं जो उत्साहित पायथन वितरण के नवीनतम संस्करण के साथ आता है। क्या आप देख सकते हैं कि यह पीडीएफ बैकएंड के साथ काम करता है या नहीं। धन्यवाद!
जिज्ञासु २

यह मैक ओएस एक्स पर पीडीएफ बैकएंड के साथ काम करता है। क्या आप सुनिश्चित हैं कि आउटपुट फ़ाइल वास्तव में अपडेट है plt.savefig()?
एरिक ओ लेबिगॉट सेप

मुझे समस्या का एहसास हुआ, मुझे लगता है। अगर मैं लाइन aPlot =में लग जाता हूं तो plt.subplotयह मेरे लिए भी काम करता है। ऐसा लगता है कि यदि कोई सबप्लॉट को एक चर की तरह असाइन करता है, तो कुल्हाड़ियों की सीमा को स्थापित करने के कुछ अन्य तरीके का उपयोग किया जाना चाहिए। क्या यह सच है?
क्यूरियस 2

1
जहां तक ​​मुझे पता है, plt.ylim()वर्तमान कुल्हाड़ियों की सीमा को लागू करता है, जो आपके द्वारा किए जाने पर निर्धारित होते हैं plt.subplot()। मुझे यह भी विश्वास नहीं हो रहा है कि इस बात की plt.subplot()परवाह कैसे की जाती है कि जो रिटर्न देता है उसका उपयोग किया जाता है (एक चर में रखा जाए या नहीं, आदि)। तो मैं कहूंगा कि इसे काम करना चाहिए; यह मेरी मशीन पर काम करता है।
एरिक ओ लेबिगॉट

6

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

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

Xlim और ylim के लिए प्रलेखन पर एक नज़र डालें


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.