2016-07-18 12 views
1

私は、matplotlibを使ってプロットしているデータの曲線を持っています。データの小さな値のx範囲はすべてNaN値で構成されているため、x >> 0の値で私のカーブが突然開始します(これは、私が持っている別のデータセットでは必ずしも同じ値ではありません)。カーブが始まり、カーブからx軸まで伸びる垂直の破線を配置したいと思います。どのように私はこれを行うことができる人は助言することができますか?おかげでカーブが始まる場所あなたが知っていると仮定すると、Python - 縦線をプロットする

答えて

2

は、あなただけ使用することができます。

plt.plot((x1, x2), (y1, y2), 'r-')がポイントあなたのケースではここ(x2, y2)

にポイント(x1, y1)から線を引くために、x1x2は同じになりますy1y2のみ変更する必要があります。これはまっすぐな垂直線です。

+0

カーブの開始位置がわからない場合は、最初のNaN以外の値の配列の位置を知る方法はありますか? –

+0

はいできます。あなたの配列の最後の 'NaN'の正確な位置を見つけるために' for'ループを使ってください。あなたの配列が 'x'と仮定すると、最後の' NaN'値が配列の12番目の位置にあると仮定して 'x [12]'を使うことができます – ThePredator

1

を使用すると、同じxの値を設定すると、このようなコードにする必要があり垂直の破線をプロットするには(使用を「 - 」破線またはのために「:」):

x = 100 # line at this x position 
y0 = 0 # y limits of a line 
y1 = 100 
plt.plot((x,x),(y0,y1),'k--') 
2

を別の方法として、次のことができplt.vlinesを使用して縦線を描画し、データがリストではなくnumpyの配列である場合は、forループをスキップして最初のNaN以外の値を決定し、代わりにnp.isfiniteを使用することができます。第1の有限値にするたびに取得するをループにあなたが持っているどのように多くの値に応じて、

x_value = data_array[np.where(np.isfinite(data_array))[0]] 

、これは速い選択肢である可能性がありますような何か。

関連する問題