前提・実現したいこと
pythonのmatplotlibを使用してグラフ表示アプリを作成しています。
0~50までのランダムな数値が入っているデータフレームがあり、それを折れ線グラフで表示する。
グラフ上で、通常背景色は白で、25以下の値の背景色は黄色に、
25以下が5個以上続く場合には背景色をオレンジにするという条件があります。
発生している問題・エラーメッセージ
1)下記に記述する現在の方法でも背景色が変わっているように見えるのですが、強引すぎるやり方で効率悪いかと思います。 別の単純なやり方があれば教えてください。 2)現在の手順だとグリッドが最背面にあり、黄色、オレンジの部分はメモリ線が見えなくなる状況です。 vlinesを最背面にする方法、もしくはgridを最前面にする方法があれば教えてください。
該当のソースコード
Python
1import pandas as pd 2import matplotlib.pyplot as plt 3import numpy as np 4 5def main(): 6 df = pd.DataFrame(np.random.randint(0,50,size=(1000,1)),columns=list('A')) 7 8 df2 = df[df['A']<=25] 9 df2 = df2.reset_index() 10 df2['diff'] = df2['index'].diff() 11 12 cnt = 0 13 df2['オレンジ'] = 0 14 for i in range(len(df)): 15 if df2['diff'].get(i,None) == 1.0: 16 cnt += 1 17 if cnt >= 5: 18 df2.loc[i-5:i,'オレンジ'] = df2.loc[i-5:i,'index'] 19 else: 20 cnt = 0 21 22 fig = plt.figure() 23 plt.grid(b=None, which='both', axis='both') 24 plt.plot(df['A'],color='blue') 25 plt.vlines(df2['index'],0,50,color='yellow') 26 plt.vlines(df2['オレンジ'],0,50,color='orange') 27 28 plt.show() 29if __name__ == '__main__': 30 main()
試したこと
グラフ表示部は、背景色が変わった風に見せるために縦線を描いている状況です。
補足情報(FW/ツールのバージョンなど)
Python 3.7.3
matplotlib : 3.0.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。