在Matplotlib Python 3.6中逐点绘制轴线

在Matplotlib Python 3.6中逐点绘制轴线,matplotlib,data-visualization,visualization,python-3.6,Matplotlib,Data Visualization,Visualization,Python 3.6,我正在从Excel文件中读取模拟数据。从这些数据中,我生成了两个包含200个值的数据帧。现在我想用蓝色绘制数据框1中的所有值,用紫色绘制数据框2中的所有值。因此,我有以下代码: df = pd.read_excel("###CENSORED####.xlsx", sheetname="Data") unpatched = df["Unpatched"][:-800] patched = df["Patched"][:-800] x = range(0,len(unpatched)) fig =

我正在从Excel文件中读取模拟数据。从这些数据中,我生成了两个包含200个值的数据帧。现在我想用蓝色绘制数据框1中的所有值,用紫色绘制数据框2中的所有值。因此,我有以下代码:

df = pd.read_excel("###CENSORED####.xlsx", sheetname="Data")

unpatched = df["Unpatched"][:-800]
patched = df["Patched"][:-800]
x = range(0,len(unpatched))
fig = plt.figure(figsize=(10, 5))
plt.scatter(x, unpatched, zorder=10, )
plt.scatter(x, patched, c="purple",zorder=19,)
这将导致以下图表:

但是现在我想画一些线,让蓝色和紫色的点之间的区别可视化。我想到了一条橙色的线,从模拟运行x时的蓝色圆点到模拟运行x时的紫色圆点。我尝试用下面的代码“作弊”,因为我对matplotlib很陌生

scale_factor = 300
for a in x:
   plt.axvline(a, patched[a]/scale_factor, unpatched[a]/scale_factor, c="orange")
但这导致了如下所示的不准确:



那么有没有更聪明的方法呢?我意识到axvline文档只说ymin,ymax只能是标量。我能把给定的值转换成拟合的标量吗?

看起来你在寻找
plt.vlines(x,patched.values,unpatched.values)
oh哇。。。那么axvline和vline的确切区别是什么呢?我的意思是,这个简单的更改刚刚解决了我的问题,但我仍然对它感兴趣。在
axvline
中,y坐标是轴坐标(介于0和1之间)。但在这里你要使用正常的数据坐标。