如何在Matplotlib中禁用log-plot的次要刻度?

时间:2012-05-28 07:46:44

标签: python 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

3 个答案:

答案 0 :(得分:24)

plt.minorticks_off()

关闭它们!

要更改它们的数量/定位它们,您可以使用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个对数间隔的小刻度   剔

答案 1 :(得分:15)

调用plt.minorticks_off()会将其应用于当前轴。 (该函数实际上是gca().minorticks_off()的包装。)

您也可以采用相同的方式将其应用于单个轴:

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

ax.minorticks_off()

答案 2 :(得分: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()