17

いくつかの不連続点を持ついくつかの関数をプロットしています。各関数はリストとして与えられます。関数が連続している部分だけ点を線で結びたい。

これは、プロットが何をしているかの簡単な例です。

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')

x=0.5 で不連続がありますが、プロットは関係なくすべての点を線で結びます。

私の機能はもちろん異なります。通常、さまざまな場所でいくつかの不連続性があります。不連続性の基準は単純です。たとえば、関数が 0.5 以上ジャンプする場合、その時点で不連続であると想定します。

関数が不連続な点の間の接続線をドロップするように指示するプロットのオプションはありますか? gnuplot を使えば簡単にできたのを覚えています。

4

2 に答える 2

29

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')

編集:

不連続点に 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)

ここに画像の説明を入力

于 2012-04-30T04:05:13.633 に答える