【发布时间】:2018-08-16 21:15:31
【问题描述】:
我现有的代码可以简化为:
import matplotlib.pyplot as plt
ref = [(0.0, 151.6875), (0.011, 151.75), (0.022, 151.75), (0.031, 151.625), (0.042, 151.625), (0.052, 151.6875), (0.061, 151.625), (0.073, 151.6875), (0.08, 151.625)]
res = [(0.0, 151.879), (0.01, 151.881), (0.02, 151.882), (0.03, 151.884), (0.04, 151.886), (0.05, 151.887), (0.06, 151.889), (0.07, 151.891), (0.08, 151.892)]
plt.plot(*zip(*res), 'g')
plt.plot(*zip(*ref), 'b')
plt.show()
不幸的是,我不太了解 pyton,无法理解带星号的表达式或 zip 函数,但它似乎将 X 值分组为一个元组,将 Y 值分组为一个元组。
我想在ref 周围添加 10% 的公差线。我知道这应该可行:
plt.fill_between(x, y * 0.9, y * 1.1)
但我不知道如何将 ref 和 res 转换为 x 和 y。我试过了:
ref_x, ref_y = zip(*ref)
plt.fill_between(ref_x, ref_y * 0.9, ref_y * 1.1)
TypeError: 不能将序列乘以“float”类型的非整数。
我已经试过了:
for point in ref :
plt.fill_between(point[0], point[1] * 0.9, point[1] * 1.1)
TypeError: len() of unsized object
如何将ref 翻译成我可以使用的东西?
【问题讨论】:
标签: python matplotlib