使用 matplotlib 在点之间画一条线,忽略丢失的数据
Draw a line between points, ignoring missing data, with matplotlib
这些年来已经问过许多类似的问题,比如这个 here,但是 none 已接受的答案解决了我的问题。
以下代码:
x=[0, 0.02, 0.05, 0.08, 0.11, 0.14]
y1=[31.15, None, 15.24, 11.65, 13.54, 9.55]
y2=[20.3, 14.2, 5.6, 3.10, 8.8, 10.45]
plt.plot(x, y1, linestyle='-',marker='o',color='red')
plt.plot(x, y2, linestyle='-',marker='o',color='blue')
产生这个情节:
但是,我想强制在 y1[] 的第一个和第三个元素之间画一条线,而不影响 y2[] 的绘制方式。这可能吗?我可以删除 x[] 的第二个元素,但这也会阻止我针对 y2[].
绘制 x[]
您可以使用一个简单的函数来只保留有效数据:
x=[0, 0.02, 0.05, 0.08, 0.11, 0.14]
y1=[31.15, None, 15.24, 11.65, 13.54, 9.55]
y2=[20.3, 14.2, 5.6, 3.10, 8.8, 10.45]
def dropnone(X, Y):
return zip(*((a,b) for a,b in zip(X,Y) if None not in [a,b]))
plt.plot(*dropnone(x, y1), linestyle='-',marker='o',color='red')
plt.plot(*dropnone(x, y2), linestyle='-',marker='o',color='blue')
输出:
这些年来已经问过许多类似的问题,比如这个 here,但是 none 已接受的答案解决了我的问题。
以下代码:
x=[0, 0.02, 0.05, 0.08, 0.11, 0.14]
y1=[31.15, None, 15.24, 11.65, 13.54, 9.55]
y2=[20.3, 14.2, 5.6, 3.10, 8.8, 10.45]
plt.plot(x, y1, linestyle='-',marker='o',color='red')
plt.plot(x, y2, linestyle='-',marker='o',color='blue')
产生这个情节:
但是,我想强制在 y1[] 的第一个和第三个元素之间画一条线,而不影响 y2[] 的绘制方式。这可能吗?我可以删除 x[] 的第二个元素,但这也会阻止我针对 y2[].
绘制 x[]您可以使用一个简单的函数来只保留有效数据:
x=[0, 0.02, 0.05, 0.08, 0.11, 0.14]
y1=[31.15, None, 15.24, 11.65, 13.54, 9.55]
y2=[20.3, 14.2, 5.6, 3.10, 8.8, 10.45]
def dropnone(X, Y):
return zip(*((a,b) for a,b in zip(X,Y) if None not in [a,b]))
plt.plot(*dropnone(x, y1), linestyle='-',marker='o',color='red')
plt.plot(*dropnone(x, y2), linestyle='-',marker='o',color='blue')
输出: