〜数値から直感的な可視化へ〜
📝 はじめに
前回はpandasを使ってSlackワースト10を抽出し、
「どのパスがクリティカルか」を自動でリスト化しました。
ただし、数が多くなると「全体の傾向」が分かりにくくなります。
そこで今回は、matplotlibを使ってSlack分布をグラフ化し、
数百〜数千パスを一目で理解できる可視化に挑戦します。
📦 matplotlibとは?
matplotlibは、Pythonの標準的な描画ライブラリです。
- 折れ線グラフ、棒グラフ、散布図、ヒストグラムなど多彩に対応
- pandasと組み合わせるとデータ解析に強力
インストールしていない場合は以下を実行してください。
pip install matplotlib
✍️ サンプルコード
前回までに作成したpandas DataFrame(df
)を使います。
Slack列の値をヒストグラムにしてみましょう。
import matplotlib.pyplot as plt
import pandas as pd
#Timing Reportから作成したDataFrameを仮定
#df = pd.DataFrame([…])
#Slack列をヒストグラム化
plt.hist(df["slack"], bins=20, edgecolor="black")
plt.title("Slack Distribution")
plt.xlabel("Slack (ns)")
plt.ylabel("Count of Paths")
plt.grid(True, linestyle="--", alpha=0.7)
#画像保存
plt.savefig("slack_histogram.png")
plt.show()
▶️ 実行結果イメージ
- 横軸:Slack値(ns)
- 縦軸:パスの本数
- 左に寄っていれば「余裕が小さいパスが多い」ことが分かる
(WordPressでは slack_histogram.png
を記事に貼り付けると分かりやすいです)
🔍 応用例
- クリティカルパスを赤線で強調
plt.axvline(0.0, color="red", linestyle="--", label="Slack=0 (Critical)")
plt.legend()
- Startpointごとに色分けした散布図
plt.scatter(range(len(df)), df["slack"])
plt.axhline(0.0, color="red", linestyle="--")
plt.title("Slack per Path")
plt.xlabel("Path Index")
plt.ylabel("Slack (ns)")
✅ まとめ
- matplotlibを使えばSlack分布を視覚化できる
- 数百〜数千パスでも一目で傾向が分かる
- タイミング違反(Slack < 0)の有無を直感的に確認可能