2017-02-13 5 views
1

このように同じ数の浮動小数点数を持つ2つのnumpy配列から来る線でチャートを印刷しています。matplotlibで色分けされた線の部分をプログラムする方法

f_used = sp.interpolate.interp1d(time, distance, kind='cubic') 
timeinterp = sp.arange(0, runtime+incr, incr) 
distinterp = f_used(timeinterp) 
plt.plot(timeinterp, distinterp, '-', lw=3, c="red") 

これまでのところ、とても良いです。次のステップでは、ピッチ(distinterp/timeinterp)に応じて線のセクションを描きたいと思います。比率が5.0を超えている場合は、ラインスタイルを「ドット付き」または/および別の色にする必要があります。 解決策が見つかりません。誰かにアイデアはありますか?

それが助け場合:ラズベリーパイ3、すべてのソフトウェアの更新でRaspbianを、各ラインオブジェクトが一つだけのスタイル/色を持つことができるので、あなたが効果的にあなたが望む別の部分にデータを分離する必要がありますのpython3

+0

私はあなたの質問を編集し、将来あなたのコードブロックを同じように(4スペースインデント)ブロックする方法を見てください。目を簡単にします。 –

答えて

1

を使用して/等。それに割り当てられた組み合わせ。

これはnumpyの使用(または、あなたのケースでちょうど直接根底にあるnumpyの機能を輸入しているscipyのダウンロード、)些細なことする必要があります

mask = (distinterp/timeinterp) > 5.0 
plt.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r') 
plt.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b') 

良い方法はmatplotlibののオブジェクト指向のAPIを使用するかもしれません:

mask = (distinterp/timeinterp) > 5.0 
fig, ax = plt.subplots() 
ax.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r') 
ax.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b') 
+0

良い答えですが、意味をなさない['plt.hold(True)'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hold)に関する声明を削除してください。それ以降の 'plot'の呼び出しは常に同じ軸にプロットされ、' plt.hold'の使用は減価償却されます。 – ImportanceOfBeingErnest

+0

このような高速回答に感謝します。仕事をしているようだ。今私はさらに作業することができます。 @ImportanceOfBeingErnest。 –

+0

あなたが正しいです。一定。 –

関連する問題