Python 我可以在rcParams中设置脊椎和蜱虫吗?

Python 我可以在rcParams中设置脊椎和蜱虫吗?,python,matplotlib,Python,Matplotlib,我倾向于在Matplotlib(v1.3.1)绘图中使用以下轴选项: 在抓取当前轴后,这可以正常工作,但我想知道是否可以通过在rcParams?中设置来实现所有这些默认行为,正如ImportanceOfBeingErnest的评论中提到的,这现在是可能的: plt.rcParams['axes.spines.top'] = False plt.rcParams['axes.spines.bottom'] = False plt.rcParams['axes.spines.left'] = Fal

我倾向于在Matplotlib(v1.3.1)绘图中使用以下轴选项:


在抓取当前轴后,这可以正常工作,但我想知道是否可以通过在
rcParams

中设置来实现所有这些默认行为,正如ImportanceOfBeingErnest的评论中提到的,这现在是可能的:

plt.rcParams['axes.spines.top'] = False
plt.rcParams['axes.spines.bottom'] = False
plt.rcParams['axes.spines.left'] = False
plt.rcParams['axes.spines.right'] = False
对于多个
rcParams
使用
dict

plt.rcParams.update({'axes.spines.top': False, 'axes.spines.right': False})

我也遇到了同样的问题,在回答这个问题的过程中,我发现了以下几点:

Matplotlib 1.3.1不将任何这些输入识别为rcParams:

>>> plt.matplotlib.__version__
'1.3.1'
>>> plt.rcParams['axes.spines.top'] = False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\<username>\Software\WinPython-64bit-2.7.6.4\python-2.7.6.amd64\lib\site-packages\matplotlib\__init__.py", line 811, in __setitem__
    See rcParams.keys() for a list of valid parameters.' % (key,))
KeyError: 'axes.spines.top is not a valid rc parameter.See rcParams.keys() for a list of valid parameters.' 

为了删除记号,我必须在事后使用ax.tick_参数(top=“off”,right=“off”)删除记号。我在
rcParams
中未找到任何相关内容

我还测试了matplotlib 2.2.3。在那里,
axes.spine.*
在顶部和底部没有标记,没有指定任何其他参数。matplotlibrc中的条目删除整个轴,包括记号,或者
rcParams
字典中新的
ytick.right
xtick.top
条目默认为
False

不幸的是,如果右侧的最后一条网格线恰好位于边缘,则仍然会隐藏该网格线,即使在相同的情况下显示顶部网格线

==>换句话说:

  • 版本1.3.1没有全局开关,需要应用
    ax.spines[“top”]。设置可见(False)
  • 1.5.1可以使用Dan建议的方法(将
    axes.spine.top
    axes.spine.right
    设置为
    False
    )全局删除线条,但不删除勾号,勾号仍然需要
    ax.tick_params()
    命令
  • 更高的版本(不确定是哪个版本引入的)也有
    ytick.right
    xtick.top
    设置,可以设置为
    True
    False
    ,也可以忽略这些边缘上的记号

因此,这似乎是一个问题。关于如何简化一些事情,有什么建议吗?这个问题答案中的helper函数对我来说非常方便。把它放在你的实用函数模块中。@cphlewis这就是我现在拥有的,一个清理轴的函数,但是如果它是默认的,那就太好了,不必每次都记得调用这个函数,只针对那些看到这个老问题的人:在任何更新的matplotlib版本中都有设置spines和ticks via的选项。
>>> plt.matplotlib.__version__
'1.3.1'
>>> plt.rcParams['axes.spines.top'] = False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\<username>\Software\WinPython-64bit-2.7.6.4\python-2.7.6.amd64\lib\site-packages\matplotlib\__init__.py", line 811, in __setitem__
    See rcParams.keys() for a list of valid parameters.' % (key,))
KeyError: 'axes.spines.top is not a valid rc parameter.See rcParams.keys() for a list of valid parameters.' 
In[1]: from matplotlib import pyplot as plt 
In[2]: plt.matplotlib.__version__
Out[2]: '1.5.1'
In[3]: plt.rcParams
Out[3]: 
RcParams({u'agg.path.chunksize': 0,
          [...]
          u'axes.spines.bottom': True,
          u'axes.spines.left': True,
          u'axes.spines.right': False,
          u'axes.spines.top': False,
          [...]
In[4]: x = np.linspace(0, 6)
  ...:     y = np.sin(x)
  ...:     plt.close('all')
  ...:     plt.plot(x,y,'k-')