如何禁用 Matplotlib 中对数图的次要刻度?
- 2025-04-10 09:46:00
- admin 原创
- 22
问题描述:
这是一个简单的情节:
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()
其结果为:
解决方案 1:
plt.minorticks_off()
把它们关掉!
要改变它们的数量/位置,您可以使用subsx
参数。像这样:
plt.xscale('log', subsx=[2, 3, 4, 5, 6, 7, 8, 9])
来自文档:
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()
解决方案 4:
如果你只想禁用一个轴上的刻度,你可以这样做
import matplotlib.pyplot as plt
from matplotlib import ticker
fig, ax = plt.subplots()
ax.xaxis.set_minor_locator(ticker.NullLocator())
我不确定为什么没有更方便的方法来禁用单个轴上的刻度。
编辑:现在我找到了一个与相关问题类似的答案,并且答案更完整
https://stackoverflow.com/a/56447047/516066
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD