我想绘制一些频率图。我想要一个带有上标符号的 x 轴,如下所示。此外,我需要带有垂直注释的垂直线,将千赫兹和兆赫兹分开。
import numpy as np
import matplotlib.pyplot as plt
band = np.linspace(0,10**12,100)
y = band
plt.plot(band,y)
plt.xlabel('Frequencies')
plt.vlines(10**3, min(y), max(y),colors = 'black', label = 'kilo Hz')
plt.vlines(10**6, min(y), max(y),colors = 'black', label = 'mega Hz')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试使用股票但不知道如何设置它。我尝试遵循一些示例,但出现了错误,例如AttributeError: 'Figure' object has no attribute 'ticklabel_format'
已经花费了大量时间,并且不知道如何继续。
一般来说,我需要以类似的方式格式化 x 轴,但plt.xscale('log')我想保持线性比例。
您可以将刻度线定义为字符串并分配它们:
mport numpy as np
import matplotlib.pyplot as plt
band = np.linspace(0,10**12,100)
y = band
plt.plot(band,y)
plt.xlabel("Frequencies")
plt.vlines(10**3, min(y), max(y),colors = 'black', label = 'kilo Hz')
plt.vlines(10**6, min(y), max(y),colors = 'black', label = 'mega Hz')
string_labels = []
for i in range(0,len(y),10):
string_labels.append(r"$10^{%02d}$" % (i/10.0))
plt.xticks(np.linspace(0,10**12,10),string_labels)
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)