我正在从Excel文件中的模拟读取数据。根据这些数据,我生成了两个包含200个值的DataFrame。现在我想以蓝色绘制来自DataFrame的所有值,以紫色绘制来自DataFrame 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只能是标量。我可以以某种方式将给定的值转换为合适的标量吗?