我想制作一些频率图。我想用一个X轴加上标符号,如here
此外,我需要垂直线与垂直注释分开千和兆赫。

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'),但是我想要保持线性比例。

最佳答案

您可以将记号标记定义为字符串并指定:

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()

关于python - matplotlib刻度轴记号和上标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16529038/

10-16 13:04