matplotlib को ylim मान मिलता है


115

मैं पायथन से matplotlibडेटा (उपयोग plotऔर errorbarकार्यों) की साजिश कर रहा हूं । मुझे पूरी तरह से अलग और स्वतंत्र भूखंडों के एक सेट की साजिश रचनी है, और फिर उनके ylimमूल्यों को समायोजित करना है ताकि वे आसानी से तुलना कर सकें।

मैं ylimप्रत्येक प्लॉट से मूल्यों को कैसे प्राप्त कर सकता हूं , ताकि मैं क्रमशः निचले और ऊपरी यली मानों के न्यूनतम और अधिकतम ले सकता हूं, और भूखंडों को समायोजित कर सकता हूं ताकि उनकी तुलना नेत्रहीन की जा सके?

बेशक, मैं सिर्फ डेटा का विश्लेषण कर सकता हूं और अपने स्वयं के कस्टम ylimमूल्यों के साथ आ सकता हूं ... लेकिन मैं मेरे matplotlibलिए ऐसा करना चाहता हूं। आसानी से (और कुशलता से) यह कैसे करना है पर कोई सुझाव?

यहाँ मेरा पायथन कार्य है जो प्लॉट का उपयोग कर रहा है matplotlib:

import matplotlib.pyplot as plt

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    # axes
    axes = plt.gca()
    axes.set_xlim([-0.5, len(values) - 0.5])
    axes.set_xlabel('My x-axis title')
    axes.set_ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

    # close figure
    plt.close(fig)

जवाबों:


159

बस उपयोग करें axes.get_ylim(), यह बहुत समान है set_ylim। से डॉक्स :

get_ylim ()

Y- अक्ष सीमा [नीचे, ऊपर] प्राप्त करें


2
क्या अक्ष सीमा के बजाय ग्राफ क्षेत्र की सीमा प्राप्त करने का एक तरीका है? ब्लैक बाउंडिंग आयत इन मूल्यों से थोड़ा परे है।
पीटर एर्लिच

@PeterEhrlich यह सिर्फ मार्जिन है।
ilija139

12
मैं plt.gca().get_ylim()काम करना चाहता हूं - अतिरिक्त अक्षों की परिभाषा की कोई आवश्यकता नहीं है।
मथायस अर्रास

वैकल्पिक रूप से, मैं उपयोग करना पसंद करता हूं fig, ax = plt.subplots()और फिर अपने सभी कार्यों को या तोfigax
BallpointBen

34
 ymin, ymax = axes.get_ylim()

यदि आप pltसीधे एपीआई का उपयोग कर रहे हैं, तो आप कुल्हाड़ियों को कॉल से पूरी तरह से बच सकते हैं:

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    plt.xlim([-0.5, len(values) - 0.5])
    plt.xlabel('My x-axis title')
    plt.ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

   # close figure
    plt.close(fig)

10

ऊपर दिए गए अच्छे उत्तरों से उत्तोलन और मान लें कि आप केवल plt का उपयोग कर रहे हैं

import matplotlib.pyplot as plt

फिर आप plt.axis()निम्न उदाहरण में सभी चार प्लॉट सीमाएँ प्राप्त कर सकते हैं ।

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8]  # fake data
y = [1, 2, 3, 4, 3, 2, 5, 6]

plt.plot(x, y, 'k')

xmin, xmax, ymin, ymax = plt.axis()

s = 'xmin = ' + str(round(xmin, 2)) + ', ' + \
    'xmax = ' + str(xmax) + '\n' + \
    'ymin = ' + str(ymin) + ', ' + \
    'ymax = ' + str(ymax) + ' '

plt.annotate(s, (1, 5))

plt.show()

उपरोक्त कोड को निम्नलिखित आउटपुट प्लॉट का उत्पादन करना चाहिए। यहां छवि विवरण दर्ज करें

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