2016-04-26 10 views
0

私は、さまざまなリストにデータを格納し、最後にそれらをプロットする大きなデータセットを通過するループを持っています。ただし、シリーズの中にはNullの値しか含まれていないため、凡例に含めないようにすることができます。伝説からシリーズを除外できる方法はありますか?これは、zにはNullが含まれているという単純な例です。matplotlibの凡例にシリーズが表示されないようにするにはどうすればよいですか?

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(1, 5) 
y = 1/x 
z = [np.nan, np.nan, np.nan, np.nan] 

plt.plot(x,y, label = 'x data') 
plt.plot(x,z, label = 'z data') 

plt.legend() 
plt.show() 
+0

plotコマンドをifに入れ、シリーズにnullが含まれているかどうかを確認します。 – krork

答えて

1

任意の値が配列ではNaNをしている場合は、Noneを返す機能を持つことができます。

def label_not_nan(arr, label): 
    if np.isnan(arr).any(): 
     return None 
    return label 

plt.plot(x,y, label=label_not_nan(x, 'x data')) 
plt.plot(x,z, label=label_not_nan(z, 'z data')) 

なしラベルが凡例に表示されません。

+0

それは 'nan'を含むリストのための良い簡単な解決策ですが、私のすべてのリストに' nan'が含まれています - 'nan'を完全に含むリストだけが必要です。したがって、 'k' = [5、np.nan、3、np.nan]' k'も凡例に表示する必要があります。ありがとう – Curtis

+1

np.isnan(arr).any()をnp.isnan(arr).all()に変更してください。 – Shovalt

関連する問題