我想在频率上制作一些情节。我希望在here中使用带有上标符号的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()
我尝试使用ticker,但无法弄清楚如何设置它。我尝试关注some示例,但收到的错误如AttributeError: 'Figure' object has no attribute 'ticklabel_format'
已经花了很多时间在上面,不知道如何前进。
一般来说,我需要以类似的方式格式化x轴,而不是plt.xscale('log')
,但我想保持线性比例。
答案 0 :(得分:4)
您可以将刻度线定义为字符串并指定它们:
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()
答案 1 :(得分:0)
我只是在黑暗中拍摄,但看起来xlabel有多种选择:
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xlabel
当我去的时候:
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.text
我注意到有一个verticalalignment选项。也许这就是你需要的东西?