2012-02-23 43 views
35

Si creo una parcela con matplotlib usando el siguiente código:eje y garrapatas etiqueta y la etiqueta del eje x garrapata en 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() 

me da un resultado que se parece a la imagen adjunta. El problema es que la etiqueta y-tick situada más abajo se superpone con la etiqueta x-tick más a la izquierda. Este parece poco profesional. Me preguntaba si había una forma automática de eliminar la etiqueta y-tick más inferior, por lo que no tengo el problema de superposición. Cuantas menos líneas de código, mejor. enter image description here

Respuesta

35

En el módulo ticker hay una clase llamada MaxNLocator que puede tomar un kwarg prune.
El uso que usted puede quitar la primera señal:

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() 

Resultado:

enter image description here

2

Esto se responde en detalle here. Básicamente, se utiliza algo como esto:

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

Una forma muy elegante para solucionar el problema del solapamiento está aumentando el relleno de los ejes X e Y-tick etiquetas (es decir, la distancia al eje). Salir de la esquina la mayoría de las etiquetas no siempre se querrán. En mi opinión, en general, se ve bien si las etiquetas están un poco más alejadas del eje que las dadas por la configuración predeterminada.

El relleno se puede cambiar a través del archivo matplotlibrc o en el script parcela mediante el uso de los comandos

import matplotlib as mpl 

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

mayoría de las veces, un acolchado de 6 también es suficiente.

16

Puede rellenar los garrapatas en el eje x:

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

Reemplazar ax con plt.gca() si no se ha almacenado la variable ax de la cifra actual.

También puede rellenar tanto los ejes eliminando el parámetro axis.

+1

parece muy elegante, pero por desgracia no parece trabajar en gráficos 3D, como 'plot_surface'. – metakermit

Cuestiones relacionadas