2012-02-23 326 views
35

刻度标签如果我创建使用下面的代码matplotlib一个情节:重叠y轴刻度标签和x轴在matplotlib

import numpy as np 
from matplotlib import pyplot as plt 
xx = np.arange(0,5, .5) 
yy = np.random.random(len(xx)) 
plt.plot(xx,yy) 
plt.imshow() 

我得到的结果看起来像附加的图像。问题是 最底部的y-tick标签与最左边的x-tick标签重叠。这 看起来不专业。我想知道是否有一个自动的 方法来删除最底部的y-tick标签,所以我没有 的重叠问题。代码行越少越好。 enter image description here

回答

35

在股票模块有一个名为MaxNLocator类,可以采取prune kwarg。
使用,你可以删除第一跳:

import matplotlib.pyplot as plt 
from matplotlib.ticker import MaxNLocator 
import numpy as np 
xx = np.arange(0,5, .5) 
yy = np.random.random(len(xx)) 
plt.plot(xx,yy) 
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower')) 
plt.show() 

结果:

enter image description here

2

这回答详细here。基本上,你可以使用这样的事情:

plt.xticks([list of tick locations], [list of tick lables]) 
6

一个非常优雅的方式来解决重叠问题增加了x和y蜱填充标签(即到轴的距离)。离开角落最多的标签可能并不总是被要求。在我看来,一般来说,如果标签距离轴比标准配置给出的距离稍远一些,看起来不错。

的填充可以通过matplotlibrc文件或在您的剧情脚本,通过使用命令

import matplotlib as mpl 

mpl.rcParams['xtick.major.pad'] = 8 
mpl.rcParams['ytick.major.pad'] = 8 

大多数时候发生变化,6填充也是足够的。

16

可以垫在x轴的刻度:

ax.tick_params(axis='x', pad=15) 

plt.gca()更换ax如果你还没有对目前的数字存储变量ax

您也可以填充两个轴,删除axis参数。

+1

看起来非常优雅,但不幸的是似乎不能在3D图上工作,例如'plot_surface'。 – metakermit 2014-06-11 08:14:21