我倾向于在Matplotlib(v1.3.1)图中使用以下轴选项:
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(True)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_visible(True)
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
ax.tick_params(axis="both", which="both", bottom="off", top="off",
labelbottom="on", left="off", right="off", labelleft="on")
抓住当前轴后这个工作正常,但我想知道是否可以通过设置rcParams
中的内容来实现所有这些默认行为?
答案 0 :(得分:1)
正如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})
答案 1 :(得分:0)
我遇到了同样的问题,并且在此答案之间找到了以下内容:
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.'
Matplotlib 1.5.1 但是:
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-')
为了删除刻度线,我不得不在事后删除它们,使用 ax.tick_params(top="off", right="off")
。我在 rcParams
中没有找到任何相关内容。
我还测试了 matplotlib 2.2.3。在那里,axes.spine.*
顶部和底部没有刻度,没有指定任何其他参数。 matplotlibrc 中的条目删除了整个轴,包括刻度线,或者 ytick.right
字典中的新 xtick.top
、rcParams
条目默认为 False
不幸的是,即使在相同情况下显示顶部网格线,如果右侧的最后一条网格线正好位于边缘,它仍然会隐藏右侧的最后一条网格线。
==> 换句话说:
ax.spines["top"].set_visible(False)
。axes.spine.top
和 axes.spine.right
设置为 False
)全局删除行,但不能删除刻度线,它仍然需要 {{ 1}} 命令ax.tick_params()
和 ytick.right
设置,可以设置为 xtick.top
或 True
也可以省略勾号那些边缘。