如何删除功能不连续的连接线

And*_*lov 12 matplotlib

我正在绘制一些具有多个不连续性的函数.每个函数都以列表形式给出.我想只在函数连续的地方连接点.

以下是情节正在进行的简化示例.

x=linspace(0,1,100)    
y=zeros(100)
y[x<0.5] = x[x<0.5]
y[x>=0.5] = 1 + x[x>=0.5]
plot(x, y, '-o')
Run Code Online (Sandbox Code Playgroud)

在x = 0.5处存在不连续性,但是无论如何,绘图都将所有点与线连接起来.

我的功能当然不同.它们通常在不同的地方有几个不连续点.不连续性的标准很简单.比方说,如果函数跳跃超过0.5,我认为它在那一点是不连续的.

是否有一个选项可以告诉它放下功能不连续的点之间的连接线?我记得能够用gnuplot轻松做到这一点.

HYR*_*YRY 20

使用nan将线分成多个段:

import numpy as np
from pylab import *
x=linspace(0,1,100)    
y=zeros(100)
y[x<0.5] = x[x<0.5]
y[x>=0.5] = 1 + x[x>=0.5]

pos = np.where(np.abs(np.diff(y)) >= 0.5)[0]

x[pos] = np.nan
y[pos] = np.nan

plot(x, y, '-o')
Run Code Online (Sandbox Code Playgroud)

编辑:

在不连续处插入nan:

pos = np.where(np.abs(np.diff(y)) >= 0.5)[0]+1
x = np.insert(x, pos, np.nan)
y = np.insert(y, pos, np.nan)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述