在matplotlib的pyplot.axis中使用多个关键字

在matplotlib的pyplot.axis中使用多个关键字,matplotlib,Matplotlib,在Python中使用matplotlib,如何将两个关键字传递给pyplot.axis()?比如: pyplot.axis('tight','off')查看帮助和源代码,我认为您无法做到这一点 从帮助(pyplot.axis): 轴(*v,**kwargs) 获取或设置轴属性的方便方法。 方便方法。对我来说,这已经表明我们不应该对这种方法有太高的期望。其余的帮助似乎也表明只能传递单个字符串参数 那么让我们来看看来源。对我来说,pyplot.axis位于/usr/local/lib/python

在Python中使用
matplotlib
,如何将两个关键字传递给
pyplot.axis()
?比如:
pyplot.axis('tight','off')
查看帮助和源代码,我认为您无法做到这一点

帮助(pyplot.axis)

轴(*v,**kwargs)
获取或设置轴属性的方便方法。
方便方法。对我来说,这已经表明我们不应该对这种方法有太高的期望。其余的帮助似乎也表明只能传递单个字符串参数

那么让我们来看看来源。对我来说,
pyplot.axis
位于
/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py
中。第1443行开始定义axis,无需进一步说明,它只是将问题传递给底层axis对象:

return gca().axis(*v, **kwargs)
因此,我们通常需要
axis
对象的
axis()
方法。这个类是在
/usr/local/lib/python3.4/dist packages/matplotlib/axes/_axes.py
中定义的,但是它没有定义
axis()
方法。因此,它是从AxesBase继承的。这位于
/usr/local/lib/python3.4/dist packages/matplotlib/axes/\u base.py

现在,
\u AxesBase
终于实现了
axis()
。开头:

def axis(self, *v, **kwargs):                                                                         
    """Set axis properties.                                                                           

    Valid signatures::                                                                                

      xmin, xmax, ymin, ymax = axis()
      xmin, xmax, ymin, ymax = axis(list_arg)
      xmin, xmax, ymin, ymax = axis(string_arg)                                                       
      xmin, xmax, ymin, ymax = axis(**kwargs)

    ...
这个docstring看起来不太好,它再次表明只能提供一个字符串参数。查看实现支持这种印象。基于字符串的输入在块中处理,如下所示:

    if len(v) == 1 and is_string_like(v[0]):
        s = v[0].lower()
        if s == 'on':
            self.set_axis_on()
        elif s == 'off':
            self.set_axis_off()
        elif s in ('equal', 'tight', 'scaled', 'normal',
                   'auto', 'image', 'square'):

            ...
这些字符串不会出现在此
if
块之外的方法中的任何位置,但是
if
的条件显然假定为标量输入,或者在最坏的情况下为单个元素iterable。这意味着您不能同时将多个字符串传递到轴


请注意,您可以查看每个选项的作用,并根据需要手动使用它们。当然,结果应该相当于您多次调用
pyplot.axis
,但是命令的顺序将得到很好的定义(这可能很重要),并且您可以避免函数调用中的一些开销。

查看帮助和源代码,我认为您无法做到这一点

帮助(pyplot.axis)

轴(*v,**kwargs)
获取或设置轴属性的方便方法。
方便方法。对我来说,这已经表明我们不应该对这种方法有太高的期望。其余的帮助似乎也表明只能传递单个字符串参数

那么让我们来看看来源。对我来说,
pyplot.axis
位于
/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py
中。第1443行开始定义axis,无需进一步说明,它只是将问题传递给底层axis对象:

return gca().axis(*v, **kwargs)
因此,我们通常需要
axis
对象的
axis()
方法。这个类是在
/usr/local/lib/python3.4/dist packages/matplotlib/axes/_axes.py
中定义的,但是它没有定义
axis()
方法。因此,它是从AxesBase继承的。这位于
/usr/local/lib/python3.4/dist packages/matplotlib/axes/\u base.py

现在,
\u AxesBase
终于实现了
axis()
。开头:

def axis(self, *v, **kwargs):                                                                         
    """Set axis properties.                                                                           

    Valid signatures::                                                                                

      xmin, xmax, ymin, ymax = axis()
      xmin, xmax, ymin, ymax = axis(list_arg)
      xmin, xmax, ymin, ymax = axis(string_arg)                                                       
      xmin, xmax, ymin, ymax = axis(**kwargs)

    ...
这个docstring看起来不太好,它再次表明只能提供一个字符串参数。查看实现支持这种印象。基于字符串的输入在块中处理,如下所示:

    if len(v) == 1 and is_string_like(v[0]):
        s = v[0].lower()
        if s == 'on':
            self.set_axis_on()
        elif s == 'off':
            self.set_axis_off()
        elif s in ('equal', 'tight', 'scaled', 'normal',
                   'auto', 'image', 'square'):

            ...
这些字符串不会出现在此
if
块之外的方法中的任何位置,但是
if
的条件显然假定为标量输入,或者在最坏的情况下为单个元素iterable。这意味着您不能同时将多个字符串传递到轴


请注意,您可以查看每个选项的作用,并根据需要手动使用它们。当然,结果应该相当于多次调用
pyplot.axis
,但是命令的顺序将得到很好的定义(这可能很重要),并且可以消除函数调用中的一些开销。

我最终使用了两行代码:
pyplot.axis('tight')
pyplot.axis('off')
来实现我所需要的。我最终使用了两行代码:
pyplot.axis('tight')
pyplot.axis('off')
来实现我所需要的。