2012-02-23 461 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