調べても意外とすぐに出てこなかったのでメモ。
matplotlib.pyplot.bar
でnumpy.array
型のデータの棒グラフを作成するメソッド。
環境
- Python 3.7.3
- numpy 1.17.2
- matplotlib 3.1.1
メソッド
import numpy as np
import matplotlib.pyplot as plt
def plot_sorted_bar(figsize: tuple, x: np.array, y: np.array, title: str = None) -> None:
"""
入力値を降順ソートして棒グラフを作成するメソッド。
Parameters
----------
figsize : tuple
figsizeのtuple。
x : np.numpy
横軸(ラベル)。
y : np.numpy
縦軸(数値)。
title : str
グラフタイトル文字列。
"""
# yを昇順ソート後、逆順にindexを取得
sorted_index = np.argsort(y)[::-1]
# 棒グラフの可視化
plt.figure(figsize=figsize)
plt.bar(
#ラベルが数値だと自動ソートされるため、x軸は文字列型にしておく
x[sorted_index].astype('str'),
np.sort(y)[::-1]
)
if title is not None:
plt.title(title)
※メソッド引数の引数: 型
や-> 型
は型ヒントと呼ばれている。明示的に引数の型を記載しているだけで、明記以外の型でも実行エラーにはならない。
※numpy.array
で使われている[::-1]
は配列を逆順に返してくれるスライス。例えば[0,1,2,3][::-1]とすると、[3,2,1,0]が返ってくる。
実行例
# サンプルデータ作成
x = np.array([1, 2, 3, 4, 5])
y = np.array([100, 200, 300, 400, 500])
# 可視化
plot_sorted_bar(
figsize=(20, 10),
x=x,
y=y,
title='bar plot'
)
参考
『[python] スライスでリバース!!(スライスの解説もあるよ!)』
https://qiita.com/okkn/items/54e81346d8f35733ab5e#%E3%81%8A%E5%BE%85%E3%81%A1%E3%81%8B%E3%81%AD%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9%E3%81%A7%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9