発展編③:matplotlibでSlack分布をグラフ化する

Parser

〜数値から直感的な可視化へ〜

📝 はじめに

前回は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 を記事に貼り付けると分かりやすいです)


🔍 応用例

  1. クリティカルパスを赤線で強調
plt.axvline(0.0, color="red", linestyle="--", label="Slack=0 (Critical)")
plt.legend()
  1. 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)の有無を直感的に確認可能
タイトルとURLをコピーしました