matplotlib获取ylim值

esbemjvw  于 2023-10-24  发布在  其他
关注(0)|答案(7)|浏览(144)

我使用matplotlib从Python绘制数据(使用ploterrorbar函数)。我必须绘制一组完全独立的图,然后调整它们的ylim值,以便它们可以轻松地进行视觉比较。
如何从每个图中检索ylim值,以便分别获取下限和上限ylim值的最小值和最大值,并调整图,以便可以直观地比较它们?
当然,我可以分析数据,并提出自己的自定义ylim值.但我想使用matplotlib来为我做这件事。关于如何轻松(有效)做到这一点,有什么建议吗?
下面是我的Python函数,它使用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)
lo8azlld

lo8azlld1#

只需使用axes.get_ylim(),它与set_ylim非常相似。从文档:
get_ylim()
获取y轴范围[底部,顶部]

ubbxdtey

ubbxdtey2#

ymin, ymax = axes.get_ylim()

如果直接使用plt API,可以完全避免调用axes

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.ylim([-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)
f0brbegy

f0brbegy3#

利用上面的好答案,并假设您只使用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()

上面的代码应该产生以下输出图。

qcbq4gxm

qcbq4gxm4#

只需使用plt.ylim(),它可以用来设置或获取最小和最大限制

ymin, ymax = plt.ylim()
nwlqm0z1

nwlqm0z15#

我使用ax而不是plt将上述方法放在一起

import numpy as np
import matplotlib.pyplot as plt

x = range(100)
y = x

fig, ax = plt.subplots(1, 1, figsize=(7.2, 7.2))
ax.plot(x, y);

# method 1
print(ax.get_xlim())
print(ax.get_xlim())
# method 2
print(ax.axis())

hl0ma9xz

hl0ma9xz6#

不定义坐标轴:

min_lim, max_lim = plt.xlim()
46qrfjad

46qrfjad7#

这是一个老问题,但我没有看到提到,根据细节,sharey选项可能能够为您完成所有这些,而不是挖掘轴限制,边距等。文档中有一个demo,展示了如何使用sharex,但同样可以用 y 轴完成。

相关问题