2017-05-20 15 views
0

PDFドメインの特定のセクションについてプロットする必要があるPDFがあります。しかし、ときに私はmatplotlibの3次元プロット外のデータをトリミングする

enter image description here

私のプロットの範囲外起こる尾をプロットしないようにきれいな方法がありますが、私は、各PDFのために尾を取得する3Dプロットに私のラインをプロット?同じ効果を得るためにデータをNaNに変更することができますが、私はこれをmatplotlibで行いたいと思います。ここに私の現在の回避策のコードは、私は以下のプロットを行うことができますトリミングした後、

`# trim the data 
y = np.ones(PDF_x.shape)*PDF_x 
y[y>95]= np.nan 
y[y<75]= np.nan 


# plot the data 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
for i in range(PDF_capacity.shape[1]): 
    ax.plot(life[i]*np.ones((PDF_x.shape)),y,PDF_capacity[:,i], label='parametric curve') 

# set the axis limits 
ax.set_ylim(75,95) 

# add axis labels 
ax.set_xlabel('charge cycles to failure point of 75% capacity') 
ax.set_ylabel('capacity at 100 charge cycles') 
ax.set_zlabel('probability')` 

であるあなたがそれをやっている方法でnanでデータをマスキング

enter image description here

+0

プロットプロパティはプロットされたデータを制限しますか? xlimやylimのように? – wwii

+2

既に 'nan [n] '(y [y> 95] = np.nan')のマスキングを使用しない理由はありません。 「私はしたい」というのは、すでに誰もが欠点のない1ライナーのソリューションを持っているものに多くの努力を払うように説得するための非常に良い議論ではない。 – ImportanceOfBeingErnest

+0

私は 'ax.set_ylim(75,95)'を使ってプロットを指定された制限に制限していますが、データをこれらの制限の間にトリミングしません。 –

答えて

1

は良いと実用的です溶液。

matplotlibの3Dプロットは2D空間への投影であるため、自動クリッピングを実装するのは難しいでしょう。私はそれが可能だと思うが、私は努力する価値があるとは確信していない。まず、異なる種類のプロットを別々に扱う必要があるため、少なくともいくつかのケースでは、おそらくデータをマスキングすることが最良の選択であることが分かります。今、手動で1行または2行で行うことができる同じことを行うために、プロットオブジェクトの複雑なサブクラス化を行うことはおそらく過度のことです。

私は、既に持っている解決策を使用することをお勧めします。特にこれまでのところ、何の欠点もないように思われるからです。

関連する問題