matplotlib得到ylim值

syn*_*tik 98 python plot matplotlib

matplotlib用来绘制Python的数据(使用ploterrorbar函数).我必须绘制一组完全独立且独立的图,然后调整它们的ylim值,以便可以轻松地进行视觉比较.

如何ylim从每个绘图中检索值,以便我可以分别获取下ylim值和上ylim值的min和max,并调整绘图以便可以直观地比较它们?

当然,我可以分析数据并提出我自己的自定义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)
Run Code Online (Sandbox Code Playgroud)

ely*_*ase 126

只是使用axes.get_ylim(),它非常相似set_ylim.来自文档:

get_ylim()

获取y轴范围[bottom,top]

  • 我发现`plt.gca()。get_ylim()`很方便-不需要额外的轴定义。 (3认同)
  • 有没有办法获得图形区域限制而不是轴限制?黑色边界矩形稍微超出了这些值。 (2认同)
  • 或者,我更喜欢使用“fig, ax = plt.subplots()”,然后通过“fig”或“ax”路由所有函数 (2认同)

Ada*_*hes 31

 ymin, ymax = axes.get_ylim()
Run Code Online (Sandbox Code Playgroud)

如果您正在使用该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)
Run Code Online (Sandbox Code Playgroud)

或者情况不是这样吗?

  • 轴更具编程性 - 例如,您可以构建一个函数库来获取和操作轴对象。但“plt”对象更多的是为了快速做一些事情。因此,如果您正在修补,“plt”会更快。如果您正在构建一个更大的应用程序,axes 可能是最好的选择。无论如何,这是我的经历。老实说,它总体上是一个奇怪的 API。 (3认同)

Tho*_*ves 18

利用上面的好答案并假设您只使用 plt 作为

import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

然后您可以使用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()
Run Code Online (Sandbox Code Playgroud)

上面的代码应该产生以下输出图。 在此处输入图片说明


Gab*_*Cia 7

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

ymin, ymax = plt.ylim()
Run Code Online (Sandbox Code Playgroud)