マイナス値のとき棒グラフの色を変える方法 [matplotlib]

matplotlibでマイナス値のとき棒グラフの色を変える方法を紹介します。

 

マイナス値のとき色を変える

プロット時に色指定する方法

値がマイナス値・負値のときに棒グラフの色を変えるには、Axes.bar()の引数colorをリストで与えられることを利用します。

 

pythonでは、[条件 for 変数 in データのリスト]という書法で、条件を適用したリストを作成することができます。

例えば、負値のときに’r'(赤色)、正値のときに’b'(青色)を与えるリストを作成するには次のようにします。

color = [('b' if i > 0 else 'r') for i in Y]
# ['r', 'b', 'r', 'b', 'r', 'b', 'r', 'b', 'r', 'b']

 

このリストをプロット時にcolor引数に渡すことで、次のように負値のときに棒の色を変えることができます。

import numpy as np
import matplotlib.pyplot as plt

X = np.arange(10) 
Y = np.random.uniform(-10, 10, 10)

#正値のとき(i>0)は、青色('b')、そうでないなら赤色('r')を指定。
color = [('b' if i > 0 else 'r') for i in Y]

fig, ax = plt.subplots()
ax.bar(X, Y, color=color)

fig.show()

プロット後に色指定する方法

bar関数はRectangleのリストを返します。プロット後に色を変更したいときには、Rectangleのset_color()関数を使用します。

  • Rectangle.set_color(‘red’)

 

import numpy as np
import matplotlib.pyplot as plt

X = np.arange(10) 
Y = np.random.uniform(-10, 10, 10)

fig, ax = plt.subplots()
rects = ax.bar(X, Y)

for i, r in enumerate(rects):
  if(Y[i] < 0):
    r.set_color('red')

fig.show()

Playgrounds

まとめ

matplotlibで、マイナス値のときに棒グラフの色を変える方法について紹介しました。

 

参考