Как отключить второстепенные тики логарифма в Matplotlib?
Вот простой сюжет:
![enter image description here]()
1) Как отключить тики?
2) Как уменьшить их число?
Вот пример кода:
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()
Что производит:
![enter image description here]()
Ответы
Ответ 1
plt.minorticks_off()
Отключает em!
Чтобы изменить их количество/положение, вы можете использовать параметр subsx
. например:
plt.xscale('log', subsx=[2, 3, 4, 5, 6, 7, 8, 9])
В docs:
subsx/subsy: где размещать субтитры между каждым основным тиком. Должна быть последовательность целых чисел. Например, в масштабе log10: [2, 3, 4, 5, 6, 7, 8, 9]
поместит 8 логарифмически разнесенных мелких тиков между каждым крупным тик.
Ответ 2
Вызов plt.minorticks_off()
применит это к текущей оси. (Функция на самом деле является оберткой для gca().minorticks_off()
.)
Вы также можете применить это к отдельной оси следующим образом:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.minorticks_off()
Ответ 3
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()