2016-12-18 20 views
-1

条件付きでpandasデータフレームをプロットするときに問題が発生します。Python matplotlibで条件付きでデータをハイライト表示

データフレームが4 * 4の場合、columns=['A', 'B', 'C', 'D']indexes=[0, 1, 2, 3]としましょう。 df.plot.bar()を実行したとします。また、各行のデータについては、データがcolumn C >= column A + column Bの場合はバーを強調表示したいと思います。 Column Dのデータに対しても同じ処理を行います。

上記の要件を満たすバーが赤で強調表示され、残りの部分が白くなります。

誰でもそれを行う方法を知っていますか?

答えて

1
df = pd.DataFrame([ 
     [1, 2, 4, 2], 
     [4, 3, 5, 9], 
     [3, 1, 0, 1], 
     [2, 6, 9, 2] 
    ], columns=list('ABCD')) 

condAB = pd.DataFrame(False, df.index, ['A', 'B']) 
condCD = df[['C', 'D']].ge(df[['A', 'B']].sum(1), 0) 
cond = pd.concat([condAB, condCD], axis=1).stack().tolist() 
colors = np.where(cond, 'red', 'white') 

df.plot.bar(color=colors, legend=False) 

enter image description here

+0

おかげpiRSquared。あなたの方法はうまくいくと思いますが、2行目の数字5も強調表示されています。なぜそれが起こるのか分かりませんが、ありがとう! – thatMeow

+0

@AlexMeowええ、それは変です。私はチャンスがあるときにそれを調べます。 – piRSquared

+0

お時間をいただきありがとうございます。 – thatMeow

関連する問題