0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python(matplotlib)でパレート図を作成してみた

Posted at

概要

python(matplotlib)でパレート図を作成してみました。以下のページを参考にしました。
https://self-development.info/python%E3%81%A7%E3%83%91%E3%83%AC%E3%83%BC%E3%83%88%E5%9B%B3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%90matplotlib%E3%80%91/

環境構築

上記ページのパレート図には日本語が入っているのでそれを扱えるように日本語用のmatplotlibをインストールしました。

$ sudo pip3 install japanize_matplotlib

ソースコード

上記ページのソースでは日本語がうまく表示されなかったので、japanize_matplotlibをimportしました。

pareto_chart3.py
# coding: UTF-8

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

# ラベル
labels = ['', '', '', '', '', '', '', '', '', '']
# 値
values = [100, 90, 80, 70, 60 ,50, 40, 30, 20, 10]
 
# データ操作用
df = pd.DataFrame({"label": labels, "value": values}, columns=["label", "value"])
# 「値」の降順にデータを並び替える
df = df.sort_values(by="value", ascending=False)
# 累積和を求める
df["accum"] = np.cumsum(df["value"])
# 比率の累計を求める
df["accum_percent"] = df["accum"] / sum(df["value"]) * 100
 
# サイズ指定
fig = plt.figure()
# 軸関係の表示
ax = fig.add_subplot(111)
 
# データ数のカウント
data_num = len(df)
 
# 棒グラフの描画
ax.bar(range(data_num), df["value"])
ax.set_xticks(range(data_num))
ax.set_xticklabels(df["label"].tolist())
ax.set_xlabel("(項目)")
ax.set_ylabel("(頻度)")
 
# 折れ線グラフの描画
ax_add = ax.twinx()
ax_add.plot(range(data_num), df["accum_percent"])
ax_add.set_ylim([0, 100])
ax_add.set_ylabel("(比率の累計)")
 
# グラフを画像保存
plt.savefig("result.png", facecolor="white")

実行

以下の通りコマンドを実行しました。

$ python3 pareto_chart3.py 

すると以下の通り画像ファイル(result.png)が出力されました。

実行結果

画像の中身は以下の通りでした。できました。
result.png

何かの役に立てばと。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?