Pynote

Python、機械学習、画像処理について

matplotlib - 棒グラフ / 積み上げ棒グラフを作成する。

棒グラフを作成する。

棒グラフpyplot.bar() または Axes.bar() で作成できる。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, axes = plt.subplots(figsize=(4, 4))
axes.bar(x, y)

plt.show()


棒の幅を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2] = plt.subplots(1, 2, figsize=(8, 4))
axes1.bar(x, y, width=0.2)  # すべて 0.2 に設定する。
axes2.bar(x, y, width=[0.5, 0.2, 0.7, 0.3, 0.4])  # 各棒ごとに設定する。

plt.show()


積み上げ棒グラフを作成する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y1 = np.random.randint(50, 100, 5)
y2 = np.random.randint(50, 100, 5)

# 積み上げ棒グラフを作成する。
fig, axes = plt.subplots(figsize=(4, 4))
axes.bar(x, y1)
axes.bar(x, y2, bottom=y1)

plt.show()


棒グラフの位置を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2] = plt.subplots(1, 2, figsize=(8, 4))
axes1.bar(x, y, align='center', width=0.5)  # x の値に棒の中央がくるように配置
axes2.bar(x, y, align='edge', width=0.5)  # x の値に棒の左端がくるように配置

plt.show()


棒グラフの色を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2] = plt.subplots(1, 2, figsize=(8, 4))
axes1.bar(x, y, color='green')  # すべて green に設定する。
axes2.bar(x, y, color=['red', 'blue', 'green', 'pink', 'orange'])  # 各棒ごとに設定する。

plt.show()


棒グラフの枠線の色を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2] = plt.subplots(1, 2, figsize=(8, 4))
axes1.bar(x, y, edgecolor='green')  # すべて green に設定する。
axes2.bar(x, y, edgecolor=['red', 'blue', 'green', 'pink', 'orange'])  # 各棒ごとに設定する。

plt.show()


棒グラフの枠線の幅を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2, axes3] = plt.subplots(1, 3, figsize=(12, 4))
axes1.bar(x, y, edgecolor='red', linewidth=0)  # 枠線なし
axes2.bar(x, y, edgecolor='red', linewidth=2)  # すべて 2 に設定する。
axes3.bar(x, y, edgecolor='red', linewidth=[1, 3, 0, 2, 4])  # 各棒ごとに設定する。

plt.show()


棒グラフのラベルを設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, [axes1, axes2] = plt.subplots(1, 2, figsize=(8, 4))
axes1.bar(x, y, tick_label='label')  # すべて 'label' に設定する。
axes2.bar(x, y, tick_label=['label1', 'label2', 'label3', 'label4', 'label5'])  # 各棒ごとに設定する。

plt.show()


y 軸を対数スケールに設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, axes = plt.subplots(1, 1, figsize=(4, 4))
axes.bar(x, y, log=True)  # y 軸を対数スケールに設定する。

plt.show()


横向きの棒グラフを作成する。

横向きの棒グラフは pyplot.barh() または Axes.barh() で作成できる。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.random.randint(50, 100, 5)

# 棒グラフを作成する。
fig, axes = plt.subplots(figsize=(4, 4))
axes.barh(x, y)

plt.show()


  1. broken_barh

pyplot.broken_barh: 水平方向に連続した長方形を作成する。
axes.Axes.broken_barh: 水平方向に連続した長方形を作成する。

pyplot.broken_barh(xranges, yrange, *, data=None, **kwargs)

xrange=[(x, width), (x, width), ...] と長方形の始点と幅のタプルのリストを指定する。
yrange=(ymin, ymax) と長方形の垂直方法の長さを指定する。

fig, ax = plt.subplots()

ax.broken_barh([(1, 1), (3, 1)], (1, 3), color='r')
ax.broken_barh([(5, 1)], (2, 3), color='g')
ax.broken_barh([(7, 1)], (3, 3), color='b')