【发布时间】:2018-06-18 20:54:30
【问题描述】:
我想用从前一点继续的虚线替换我的绘图中函数下降到“-1”的部分(见下图)。
这是我编写的一些代码及其输出:
import numpy as np
import matplotlib.pyplot as plt
y = [5,6,8,3,5,7,3,6,-1,3,8,5]
plt.plot(np.linspace(1,12,12),y,'r-o')
plt.show()
for i in range(1,len(y)):
if y[i]!=-1:
plt.plot(np.linspace(i-1,i,2),y[i-1:i+1],'r-o')
else:
y[i]=y[i-1]
plt.plot(np.linspace(i-1,i,2),y[i-1:i+1],'r--o')
plt.ylim(-1,9)
plt.show()
这是原图
修改后的情节:
我编写的代码有效(它会产生所需的输出),但是当我在(更大的)数据集上实际运行它时,它效率低下并且需要很长时间。有没有更聪明的方法来做这件事?
【问题讨论】:
-
所以你假设第一个值永远不是-1?
-
一个可能的想法是使用掩码数组,例如
y_masked = np.ma.masked_where(y == -1, y)。绘制它会错过-1值,所以你仍然需要做一些工作来显示以前的值并添加一条虚线(可能只绘制屏蔽值)。
标签: python numpy matplotlib plot