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()