棒グラフを透過色・透明色にする方法 [matplotlib]

matplotlibで棒グラフの色に透明色を指定する方法には、色指定でrgbaのaに透明度を指定するか、alpha引数をセットする方法があります。

rgbaのaに透明度を指定する

alpha = 0が透明で、alpha=1が不透明(デフォルト)です。0~1の範囲で指定します。

  • color = (1, 0, 0, 0.5) #(r, g, b, a)で a=0.5

import numpy as np
import matplotlib.pyplot as plt

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

color = (1, 0, 0, 0.5) #rgbaで a=0.5
color2 = (0, 1, 0, 0.5)

width = 0.4
shift = 0.2
fig, ax = plt.subplots()
ax.bar(X, Y, width, color=color)
ax.bar(X+shift, Y2, width, color=color2)

fig.show()

alpha引数をセットする

Axes.bar()にalpha引数を渡す方法です。alpha = 0が透明で、alpha=1が不透明(デフォルト)で、0~1で指定します。

  • Axes.bar(x, height, alpha=alpha)

import numpy as np
import matplotlib.pyplot as plt

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

width = 0.4
shift = 0.2
fig, ax = plt.subplots()
ax.bar(X, Y, width, alpha=0.4)
ax.bar(X+shift, Y2, width, alpha=0.4)

fig.show()

プロット後に変更する

Axes.bar()は、patches.Rectangleのリストを返します。

Rectangleの set_alpha()や set_color()関数を使うことで、プロット後に色を変更することができます。

  • rects[i].set_color(‘#aa000088’)
  • rects[i].set_alpha(0.5)

 

次の例では、0~4番目の棒に対して、プロット後に透過色を変更しています。

import numpy as np
import matplotlib.pyplot as plt

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

width = 0.4
shift = 0.2
fig, ax = plt.subplots()
rects = ax.bar(X, Y, width)
rects2 = ax.bar(X+shift, Y2, width)

for i in range(5):
  rects[i].set_alpha(0.5)
 #rects[i].set_color('#aa000088')
  rects2[i].set_alpha(0.5)

fig.show()

参考