semilogx Python绘图中x轴上的更多记号

semilogx Python绘图中x轴上的更多记号,python,numpy,matplotlib,plot,Python,Numpy,Matplotlib,Plot,我想在这个图的x轴上有更多的记号(例如20hz、40hz、80hz、160hz、320hz、640hz等的记号): 您是否知道如何调整此代码: from numpy import cos, sin, pi, absolute, arange, log10, linspace from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, semilogx f=linspace(

我想在这个图的x轴上有更多的记号(例如20hz、40hz、80hz、160hz、320hz、640hz等的记号):

您是否知道如何调整此代码:

from numpy import cos, sin, pi, absolute, arange, log10, linspace
from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, semilogx

f=linspace(20,20000, num=100)
ampl=linspace(-5,1, num=100)

semilogx(f, ampl, linewidth=2)
xlabel('Frequency (Hz)')
ylabel('Gain (dB)')
title('Frequency Response')
xlim(20, 20000)
ylim(-150, 10)
grid(True)
show()
PS:由于给出了答案,以下是解决方案:

t=[1,2,4,8,16,32,64,128,256,512,1024]` 
t1= [x*20 for x in t]
xticks(t1,t1)

请试一试,我想这正是您需要的。

给任何遇到此问题的人的一个提示-
请务必在xticks()之前调用semilogx(),否则您的标签将被重置

我不确定我的问题是matplotlib的默认行为、此答案还是文档中缺乏清晰性,但我发现此答案没有帮助。如果我使用
xlim
缩放线性图,我会得到更多的刻度,如果我在半对数/对数图上这样做,我不会。我想一个例子会使答案更好,但matplotlib中的默认值可能更好。