2012-05-28 11 views
12

Aquí es un argumento sencillo:¿Cómo deshabilitar los tics menores de log-plot en Matplotlib?

enter image description here

1) ¿Cómo desactivar las garrapatas? 2) ¿Cómo reducir su número?

Aquí es un ejemplo de código:

from pylab import * 
import numpy as np 

x = [5e-05, 5e-06, 5e-07, 5e-08, 5e-09, 5e-10] 
y = [-13, 14, 100, 120, 105, 93] 

def myfunc(x,p): 
    sl,yt,yb,ec=p  
    y = yb + (yt-yb)/(1+np.power(10, sl*(np.log10(x)-np.log10(ec)))) 
    return y 

xp = np.power(10, np.linspace(np.log10(min(x)/10), np.log10(max(x)*10), 100)) 

pxp=myfunc(xp, [1,100,0,1e-6]) 
subplot(111,axisbg="#dfdfdf") 
plt.plot(x, y, '.', xp, pxp, 'g-', linewidth=1) 
plt.xscale('log') 

plt.grid(True,ls="-", linewidth=0.4, color="#ffffff", alpha=0.5) 


plt.draw() 
plt.show() 

que produce: enter image description here

Respuesta

15
plt.minorticks_off() 

Activa em off!

Para cambiar el número de ellos/ubicarlos, puede usar el parámetro subsx. de esta manera:

plt.xscale('log', subsx=[2, 3, 4, 5, 6, 7, 8, 9]) 

Desde el docs:

subsx/subsy: ¿Dónde colocar los subticks entre cada señal importante. Debe ser una secuencia de enteros. Por ejemplo, en una escala log10: [2, 3, 4, 5, 6, 7, 8, 9]

colocará 8 garrapatas menores logarítmicamente espaciados entre cada importante garrapata.

+2

Bueno, esta es una de las razones que no puedo utilizar la documentación del matplotlib muy bien . Un gran archivo de ayuda sin separación. Todavía no puedo encontrar la documentación para esta función. ¡Muchas gracias! –

+0

@Danial Tz - ¡sí, el volumen de documentación es una locura! – fraxel

1
from pylab import * 
import numpy as np 


x = [5e-05, 5e-06, 5e-07, 5e-08, 5e-09, 5e-10] 
y = [-13, 14, 100, 120, 105, 93] 

def myfunc(x,p): 
    sl,yt,yb,ec=p  
    y = yb + (yt-yb)/(1+np.power(10, sl*(np.log10(x)-np.log10(ec)))) 
    return y 

xp = np.power(10, np.linspace(np.log10(min(x)/10), np.log10(max(x)*10), 100)) 

pxp=myfunc(xp, [1,100,0,1e-6]) 
ax=subplot(111,axisbg="#dfdfdf") 
plt.plot(x, y, '.', xp, pxp, 'g-', linewidth=1) 
plt.xscale('log') 
plt.grid(True,ls="-", linewidth=0.4, color="#ffffff", alpha=0.5) 
plt.minorticks_off() # turns off minor ticks 

plt.draw() 
plt.show() 
6

Calling plt.minorticks_off() aplicará este al eje actual. (La función es en realidad un envoltorio a gca().minorticks_off().)

También puede aplicar esto a un eje individuo de la misma manera:

import matplotlib.pyplot as plt 
fig, ax = plt.subplots() 

ax.minorticks_off() 
+1

Esta respuesta es la única que menciona el enfoque OO. –

Cuestiones relacionadas