Claude Code × python-pptx でデータビジュアライゼーションスライドを自動生成する

Claude Code×matplotlib×python-pptxでデータから美しいビジュアライゼーションスライドを自動生成する方法を解説。棒・折れ線・円・ヒートマップに対応。データ更新時は再実行するだけ。コード付き。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Claude Code・業務自動化

棒グラフ・折れ線・散布図・ウォーターフォールを python-pptx で自動生成。Excelデータを読み込んでプレゼン資料を即作成する完全ガイド。

データビジュアライゼーションデモ
📊 Claude Code 生成デモ

データビジュアライゼーションデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

データビジュアライゼーション自動化の価値

📌 この記事で実現できること

  • データビジュアライゼーション自動化の完全自動化を実現するPythonスクリプトを5ステップで解説
  • 「手動でのグラフ貼り付け・デザイン調整」という課題を根本から解消する
  • Claude Codeへの自然言語指示だけでスクリプトを生成できる
  • 月・週・日単位の定期実行で完全無人化を実現する方法も紹介

以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。

「Excelのグラフをパワポにコピペ」という作業は多くのビジネスパーソンが毎週経験します。Claude Code + python-pptx を使えば、Excelデータを直接読み込んでグラフ付きスライドを自動生成できます。

ステップ1:棒グラフスライドを自動生成

💬 Claude Code へのプロンプトExcelの売上データを読み込んで
月別売上棒グラフ付きのスライドをpython-pptxで自動生成して
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.dml.color import RGBColor
import openpyxl

# Excelからデータ読み込み
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb.active
months = [row[0].value for row in ws.iter_rows(min_row=2) if row[0].value]
sales  = [row[1].value for row in ws.iter_rows(min_row=2) if row[1].value]
budget = [row[2].value for row in ws.iter_rows(min_row=2) if row[2].value]

# PPTスライド作成
prs = Presentation()
prs.slide_width  = Inches(13.33)
prs.slide_height = Inches(7.5)
slide = prs.slides.add_slide(prs.slide_layouts[6])

# タイトル
tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.2), Inches(12), Inches(0.6))
tb.text_frame.text = "月別売上実績 vs 計画"
tb.text_frame.paragraphs[0].runs[0].font.size = Pt(20)
tb.text_frame.paragraphs[0].runs[0].font.bold = True

# グラフデータ
cd = ChartData()
cd.categories = months
cd.add_series("実績", sales)
cd.add_series("計画", budget)

chart = slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED,
    Inches(0.4), Inches(0.9), Inches(12.5), Inches(6.2), cd
).chart
chart.has_legend = True
chart.has_title  = False

# シリーズの色設定
chart.series[0].format.fill.solid()
chart.series[0].format.fill.fore_color.rgb = RGBColor(0xE8, 0x52, 0x0A)
chart.series[1].format.fill.solid()
chart.series[1].format.fill.fore_color.rgb = RGBColor(0x80, 0x80, 0x80)

prs.save("売上グラフスライド.pptx")
print("棒グラフスライド生成完了")
✅ 実行結果

Excelデータから棒グラフスライドを自動生成。毎月のコピペ作業(45分)がスクリプト実行8秒に。

😫 Before ─ よくある課題

ExcelデータをPowerPointに貼り付け・サイズ調整・スタイル統一する作業が毎回1〜2時間かかっていた。

✅ After ─ Claude Code で解決

python-pptxでExcelデータを読み込んで棒・折れ線・ウォーターフォールを自動生成。サイズ・色も自動統一。

ステップ2:折れ線グラフ+面グラフで推移を可視化

from pptx.enum.chart import XL_CHART_TYPE

# 折れ線グラフ
cd = ChartData()
cd.categories = ["Q1","Q2","Q3","Q4"]
cd.add_series("売上高",  [58, 72, 88, 95])
cd.add_series("粗利益",  [22, 28, 36, 40])
cd.add_series("営業利益",[8,  12, 18, 22])

chart = slide.shapes.add_chart(
    XL_CHART_TYPE.LINE,
    Inches(0.4), Inches(0.9), Inches(12.5), Inches(6.0), cd
).chart
chart.has_legend = True

# データラベル表示
for series in chart.series:
    series.data_labels.show_value = True
    series.data_labels.font.size  = Pt(9)

prs.save("推移グラフスライド.pptx")
print("折れ線グラフスライド生成完了")
✅ 実行結果

四半期推移の折れ線グラフをデータラベル付きで自動生成。

ステップ3:ウォーターフォールチャートで増減を可視化

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor

prs = Presentation()
prs.slide_width  = Inches(13.33)
prs.slide_height = Inches(7.5)
slide = prs.slides.add_slide(prs.slide_layouts[6])

ORANGE = RGBColor(0xE8, 0x52, 0x0A)
GREEN  = RGBColor(0x70, 0xAD, 0x47)
GRAY   = RGBColor(0xBF, 0xBF, 0xBF)
DARK   = RGBColor(0x1A, 0x1A, 0x2E)

# ウォーターフォール(積み上げ棒で擬似実装)
items = [
    {"label": "前期売上",     "value": 320, "type": "total"},
    {"label": "新規顧客",     "value":  45, "type": "plus"},
    {"label": "単価上昇",     "value":  22, "type": "plus"},
    {"label": "解約・離脱",   "value": -18, "type": "minus"},
    {"label": "為替影響",     "value":  -9, "type": "minus"},
    {"label": "今期売上",     "value": 360, "type": "total"},
]

bar_w   = 1.5
bar_gap = 0.3
max_val = 400

title_tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.2), Inches(12), Inches(0.6))
title_tb.text_frame.text = "売上増減要因分析(ウォーターフォール)"
title_tb.text_frame.paragraphs[0].runs[0].font.size = Pt(20)
title_tb.text_frame.paragraphs[0].runs[0].font.bold = True

running = 0
chart_base_y = 6.5  # スライド下端からの基準

for i, item in enumerate(items):
    x = 0.5 + i * (bar_w + bar_gap)
    val = item["value"]

    if item["type"] == "total":
        color = DARK
        bar_h = val / max_val * 4.5
        bar_y = chart_base_y - bar_h
        running = val
    elif val > 0:
        color = GREEN
        bar_h = val / max_val * 4.5
        bar_y = chart_base_y - running / max_val * 4.5 - bar_h
        running += val
    else:
        color = ORANGE
        bar_h = abs(val) / max_val * 4.5
        bar_y = chart_base_y - running / max_val * 4.5
        running += val

    shape = slide.shapes.add_shape(1, Inches(x), Inches(bar_y), Inches(bar_w), Inches(bar_h))
    shape.fill.solid(); shape.fill.fore_color.rgb = color
    shape.line.fill.background()

    # ラベル
    lbl = slide.shapes.add_textbox(Inches(x-0.1), Inches(bar_y - 0.45), Inches(bar_w+0.2), Inches(0.4))
    lbl_tf = lbl.text_frame
    lbl_tf.text = f"{'+' if val > 0 else ''}{val}"
    lbl_tf.paragraphs[0].runs[0].font.size = Pt(10)
    lbl_tf.paragraphs[0].runs[0].font.bold = True
    from pptx.enum.text import PP_ALIGN
    lbl_tf.paragraphs[0].alignment = PP_ALIGN.CENTER

    # 横ラベル
    xlbl = slide.shapes.add_textbox(Inches(x-0.1), Inches(6.6), Inches(bar_w+0.2), Inches(0.7))
    xlbl_tf = xlbl.text_frame
    xlbl_tf.text = item["label"]
    xlbl_tf.paragraphs[0].runs[0].font.size = Pt(8)
    xlbl_tf.paragraphs[0].alignment = PP_ALIGN.CENTER

prs.save("ウォーターフォール.pptx")
print("ウォーターフォールチャート生成完了")
✅ 実行結果

売上増減要因をウォーターフォールチャートで自動可視化。経営会議での説明資料作成が高速化。

📊 自動化で得られる効果
⏱ 作業時間(Before) グラフ転記・調整:2時間/回
⚡ 自動化後(After) スクリプト実行:1分
作業時間 2時間→1分(97%削減)
スタイル統一 フォント・色・サイズが常に一致
拡張性 グラフ種類追加も設定変更のみ

このシステムが解決する課題

データから美しいチャート・グラフスライドを自動生成。この自動化が特に効果的な場面と、解決できる課題を整理します。

❌ よくある課題

  • 棒グラフ・折れ線グラフ・円グラフなどの使い分けに毎回迷っている
  • データが更新されるたびにグラフを貼り直す作業に時間がかかっている
  • Excelのグラフをコピーするとスライドのデザインと合わず違和感が出る
  • 複数のデータソースを統合した比較グラフの作り方がわからない

実務での活用シナリオ

業種・部門 活用方法と効果
経営ダッシュボード KPI(売上・利益・顧客数)をビジュアルに表現したダッシュボードスライドを毎月自動生成。
市場分析レポート 市場規模・成長率・シェアを円グラフ・棒グラフで表現した分析スライドを即作成。
施策効果測定 施策前後のデータを比較グラフで表現。A/Bテスト結果を視覚的に報告。
アニュアルレポート 年次業績の推移を折れ線グラフ・面グラフで美しく可視化。投資家向け資料の品質を向上。
製品ロードマップ ガントチャート形式の開発ロードマップをスライドに自動描画。進捗管理に活用。

導入前後の効果比較

😫 Before ─ 従来の課題

Excelでグラフを作成→スライドに貼り付け→サイズ調整→色変更という手作業の繰り返し。グラフのデザインがスライドのテーマと合わず、毎回手直しに30分以上かかっていた。

✅ After ─ Claude Code で解決

python-pptx + matplotlibでデータを直接スライドに描画。色・フォント・サイズはスライドのデザインシステムに合わせてコードで定義済みのため、毎回一貫したビジュアルが完成。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • matplotlibのグラフはio.BytesIO()でメモリ内でPNG化してからpython-pptxのadd_picture()で貼り付けると、一時ファイルが不要になる
  • カラーパレットは5色以内に抑え、強調したい系列を目立つ色に設定することでメッセージが伝わりやすくなる
  • グラフタイトルと軸ラベルはデータから動的に生成(f-string)することで、毎月のデータ更新時も正確なラベルが自動設定される
  • 印刷物にも対応するために、グラフはDPI=150以上で出力することを推奨する

よくある質問(FAQ)

Q. Plotlyのインタラクティブグラフはスライドに使えますか?
A. PPTXは静的ファイルのため、Plotlyのインタラクティブ機能は使えません。ただし、Plotly図をPNG画像にエクスポートしてスライドに貼り付けることは可能です。
Q. 地図グラフ(都道府県別分布など)も作れますか?
A. Folium・geopandasで地図を生成してPNG化し、スライドに貼り付ける方法で実現できます。Claude Codeに「都道府県別売上マップを作って」と指示するだけです。
Q. グラフのアニメーション(数値がカウントアップ)は設定できますか?
A. PPTXのアニメーション機能と組み合わせることで実現できますが、設定は複雑です。Claude Codeに依頼することで、XMLレベルでの設定コードを生成できます。

まとめ

✅ Excelデータから棒グラフ・折れ線スライドを自動生成
✅ ウォーターフォールで増減要因を視覚化
✅ シリーズ色・データラベルもコードで自由制御
✅ 毎月のコピペ作業を完全に自動化

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
データアナリスト Pythonで分析した結果を毎回手動でPPTに貼り付け 分析スクリプトの最後にPPT自動生成を連結して一貫処理
コンサルタント 顧客向けの可視化資料作成に毎回1〜2日かかる データと可視化テンプレートを渡すだけで資料を自動生成
事業企画 ダッシュボードの数値を週次でPPTに手動転記している APIからデータ取得・グラフ生成・PPT更新を週次自動実行

実装で押さえるべき重要ポイント

  • 1
    matplotlib/plotlyのグラフをPNG化してPPTに挿入:plt.savefig(“chart.png”, dpi=150, bbox_inches=”tight”)でPNG保存してpython-pptxのadd_picture()で挿入するのが最も確実な方法です。
  • 2
    データの種類でグラフタイプを自動選択:カテゴリ比較は棒グラフ、時系列は折れ線、割合は円グラフ、相関は散布図というルールをコードに実装してClaude Codeに適切なグラフを自動選択させます。
  • 3
    インタラクティブグラフはHTML出力も検討:plotlyを使えばホバーで詳細が見えるインタラクティブなHTMLグラフを出力できます。PPT用の静的PNG版と合わせて提供する方法が効果的です。

ビジネスインパクト

1〜2日→数分
データ可視化資料作成時間
分析→PPT
一気通貫の自動化フロー
週次自動配信
レポート配信サイクル

この記事のまとめ

  • ✅ Pythonの分析コードとPPT生成コードを連結して分析→資料を一気通貫で自動化できる
  • ✅ matplotlib/plotlyのグラフを高解像度でPPTに自動挿入できる
  • ✅ 週次・月次のデータビジュアライゼーション資料を完全自動生成できる
  • ✅ データアナリストの資料作成作業から高付加価値の分析業務へ集中できる


関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

自然言語で指示するだけで、あなたの業務に合ったスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: