我想画一条简单的线,如本figure所示。
这是我尝试但失败的内容:
import matplotlib.pyplot as plt
x = [1,10,100,1000,10000]
y = [1,10**(-1),10**(-2),10**(-3),10**(-4)]
plt.plot(x, y,'gray',linestyle='--',marker='')
这段代码给了我非常奇怪的输出。我需要使其与图中的相同。
除了上面我发布的图中的那些数字之外,我没有所有的数据点。
答案 0 :(得分:1)
由于您只想在2个点之间绘制2条线,因此只需要4个数据点即可绘制此线。但是,要获得所需的显示,我们需要在此处应用其他一些技巧:
绘图数据
x1 = [1, 100]
x2 = [1, 10**4]
ys = [1, 10**-4]
关键是将我们的轴设置为对数缩放,并为应该显示的内容设置我们自己的标签:
fig, ax = plt.subplots()
ax.plot(x1, ys, 'gray', linestyle=':', marker='')
ax.plot(x2, ys, 'black', linestyle='--', marker='')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xticks([1, 10, 100, 1000, 10000])
ax.set_yticks([10**-4, 10**-3, 10**-2, 10**-1, 10**0, 10**1])
ax.get_yaxis().get_major_formatter().labelOnlyBase = False
ax.get_xaxis().get_major_formatter().labelOnlyBase = False
plt.show()
输出: