16
12

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 5 years have passed since last update.

pythonでタイミングチャートっぽいものを作る

Last updated at Posted at 2019-05-10

モチベーション

皆さん、タイミングチャートってどうやって作ってますか?

多くの方がExcelで作っているのではないかと思います。私もそうです。
(簡単に作れる便利なツールがあるなら教えて欲しい。)

扱っている製品の分野上、タイミングチャートを作成する機会は比較的多いのですが、正直、Excelで作成するのは面倒です。
(枠線に沿って線を一本一本繋ぎ、テキストボックスで凡例を添えたりなど)
設計ドキュメントに付属する場合や厳密なタイミング観点の設計検討が必要な場合はExcelで作ることも致し方ないのですが、そうでない場合(例えば、その場限りの議論の資料用途など)、あまり時間を掛けたくない作業です。

要するに、重要度に応じて力の掛け方を変えたい作業な訳です。

ということで、pythonとMatplotlibを使って、タイミングチャートっぽいグラフを(Excelで作成する場合と比較して)簡単に作れるスクリプトを作ることにしました。

入力データ

Excelでチャートを作る代わりに用意するのは時系列データです。ファイル形式はcsvにします。
今回は以下のような単純なデータを用意しました。(とはいえ、実務ではこのレベルのタイミングチャートが必要になる場面は割とある。)
image.png

実装

import matplotlib.pyplot as plt
import pandas as pd

# read csv file
df = pd.read_csv('data.csv', index_col=0)

# グラフ情報
GRAPHNUM = len(df.columns)  # 数
LABEL = df.columns.values   # 種類

## X軸情報(X軸共通化のため別途定義)
x = df.index.values

# データプロットと表示レイアウト
fig, axis = plt.subplots(GRAPHNUM, sharex=True)  # 複数グラフを表示するときに使う.この場合は縦に3つ並べて、x軸を共有
for i, d in enumerate(df.T.values):
    axis[i].plot(x, d, drawstyle='steps', label=LABEL[i])   # データをステップでプロット
    axis[i].set_xticks(x)                                   # ラベル位置指定
    axis[i].set_yticks(d)                                   # ラベル位置指定
    axis[i].spines['right'].set_visible(False)              # 右枠非表示
    axis[i].spines['top'].set_visible(False)                # 上枠非表示
    axis[i].spines['bottom'].set_visible(False)             # 下枠非表示
    axis[i].legend()                                        # 凡例表示
    axis[i].grid(linestyle='--')                            # グリッド線表示
# 縦方向に、間隔を密にグラフをレイアウト
fig.subplots_adjust(hspace=0.1)

# グラフ表示
plt.show()

結果

  • 提案手法の場合
    image.png

  • 従来通りExcelで作った場合
    (サンプルを作るのも手間だったので、ラベル等の情報はありません)
    image.png

さくっと作成するのには十分なクオリティじゃないでしょうかw

終わりに

本スクリプトの改善案があればご意見ください。
また、冒頭でも書きましたが、簡単にタイミングチャートを作成できるツールをご存知であれば教えてください。

16
12
7

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
16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?