在Matplotlib中的两点之间绘制一条简单的线

时间:2018-08-08 16:15:38

标签: python python-3.x matplotlib plot

我想画一条简单的线,如本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='')

这段代码给了我非常奇怪的输出。我需要使其与图中的相同。

除了上面我发布的图中的那些数字之外,我没有所有的数据点。

1 个答案:

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

输出:

enter image description here