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

Dan*_* Tz 15 python matplotlib

这是一个简单的情节:

在此输入图像描述

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()
Run Code Online (Sandbox Code Playgroud)

哪个产生: 在此输入图像描述

fra*_*xel 26

plt.minorticks_off()
Run Code Online (Sandbox Code Playgroud)

关闭他们!

要更改它们的数量/定位它们,您可以使用该subsx参数.像这样:

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

来自文档:

subsx/subsy:在每个主要滴答之间放置子语的位置.应该是一个整数序列.例如,以log10标度:[2,3,4,5,6,7,8,9]

将在每个主要刻度之间放置8个对数间隔的小刻度.

  • 嗯,这是我不能很好地使用matplotlib文档的一个原因.一个巨大的帮助文件没有分离.我仍然找不到此功能的文档.非常感谢! (2认同)

mar*_*ard 16

调用plt.minorticks_off()将此应用于当前轴.(该函数实际上是一个包装器gca().minorticks_off().)

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

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

ax.minorticks_off()
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是唯一一个提到OO方法的答案. (2认同)