Python openpyxl View3D の使い方!Excelグラフに立体感を与える方法

openpyxl

Pythonとopenpyxlを使ってExcelレポートを自動生成していると、こんな風に感じたことはありませんか?

「グラフは自動で挿入できるけど、見た目がどうも平面的でインパクトに欠けるな…」 「ExcelのGUIで設定できるような、グラフの3D効果や回転をPythonコードで直接コントロールしたい!」

せっかく自動化するなら、見た目にもこだわった訴求力の高いレポートを作りたいですよね。そのお悩み、View3Dを使えば解決できます。

この記事を読めば、openpyxl.chart.view3d.View3Dを使いこなし、3Dグラフの回転角度や奥行き、視点を自由自在にコントロールする方法がわかります。手作業で調整していたグラフの「見栄え」を完全にコード化し、誰が見ても分かりやすい立体的なグラフを自動で生成しましょう。

View3Dとは?Excelグラフを立体的に見せる魔法

まずは結論です。View3Dは、3D棒グラフや3D円グラフといった立体的なグラフに対して、その視点(カメラの位置)や回転、遠近感などを細かく設定するための機能です。

Excelで3Dグラフを選択したときに表示される「3-D 回転」の書式設定パネル。そこでマウスを使って調整するような操作を、Pythonコードで実現するのがView3Dの役割です。

この機能を使うことで、次のようなメリットがあります。

  • 表現力の向上: データをよりダイナミックに見せ、レポートの視覚的な魅力を高めます。
  • 視点の最適化: データが重なって見えにくい3Dグラフも、角度を調整して最も見やすい視点を提供できます。
  • 完全な自動化: グラフの見た目に関する設定もすべてコードで管理するため、手動での調整が一切不要になります。

重要なのは、View3D3D表示に対応したグラフオブジェクト、例えばBarChart3D, PieChart3D, AreaChart3Dなどと組み合わせて使うという点です。通常のBarChartなどには適用できないので注意しましょう。

View3Dの基本的な使い方(サンプルコード付き)

View3Dの適用方法は非常にシンプルです。 一言でまとめると、BarChart3Dのような3D対応グラフオブジェクトを作成し、そのview3dプロパティに、設定値を指定したView3Dオブジェクトを代入するだけで使えます。

ここでは、3D棒グラフを作成し、少し斜め上から見下ろしたような角度に設定する手順を3つのステップで見ていきましょう。このコードはopenpyxl 3.0以降のバージョンで動作します。

Step1. 準備:3Dグラフオブジェクトを作成する

最初に、グラフの元になるデータと、3Dグラフオブジェクトを用意します。ここでのポイントは、BarChartではなく、末尾に3Dが付いたBarChart3Dクラスを使用することです。

import openpyxl
from openpyxl.chart import BarChart3D, Reference

# 1. 新しいExcelブックとシートを作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "View3D_Sample"

# 2. グラフの元になるサンプルデータを書き込む
rows = [
    ["製品", "売上", "利益"],
    ["A", 350, 150],
    ["B", 420, 210],
    ["C", 380, 170],
    ["D", 510, 250],
]

for row in rows:
    ws.append(row)

# 3. 3D棒グラフオブジェクトを作成
# ここで BarChart3D を使うのが重要!
chart = BarChart3D()
chart.title = "製品別 業績"
chart.style = 15 # スタイルはお好みで

# 4. グラフのデータ範囲とカテゴリを指定
data = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=5)
cats = Reference(ws, min_col=1, min_row=2, max_row=5)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

この段階では、まだデフォルト視点の3Dグラフがメモリ上に作られただけです。

Step2. View3Dオブジェクトで視点を設定する

次に、View3Dをインポートし、グラフの視点を定義します。View3Dには多くのプロパティがありますが、最も基本的で重要なのは以下の2つです。

  • rot_x (X-Rotation): X軸周りの回転角度を0〜90度の範囲で指定します。グラフを上下に傾ける効果があり、数値が大きいほど上から見下ろす角度になります。
  • rot_y (Y-Rotation): Y軸周りの回転角度を0〜360度の範囲で指定します。グラフを左右に回転させる効果があります。

今回は、少し上から(rot_x=20)、少し右に(rot_y=30)回転させた視点を作ってみましょう。

from openpyxl.chart.view3d import View3D

# View3Dオブジェクトを作成し、回転角度を指定
view = View3D(
    rot_x=20,  # 20度、上から見下ろす
    rot_y=30   # 30度、右に回転
)

Step3. グラフにView3Dを適用して保存する

最後に、作成したView3Dオブジェクトを、グラフオブジェクトが持つview3dプロパティに代入します。これでグラフに視点設定が適用されます。

以下に、Step1からStep3までを統合した、コピー&ペーストでそのまま動作するサンプルコードを示します。

import openpyxl
from openpyxl.chart import BarChart3D, Reference
from openpyxl.chart.view3d import View3D

# --- Step1: 準備 ---
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "View3D_Sample"

rows = [
    ["製品", "売上", "利益"],
    ["A", 350, 150],
    ["B", 420, 210],
    ["C", 380, 170],
    ["D", 510, 250],
]
for row in rows:
    ws.append(row)

chart = BarChart3D()
chart.title = "製品別 業績"
chart.style = 15

data = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=5)
cats = Reference(ws, min_col=1, min_row=2, max_row=5)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

# --- Step2: View3Dオブジェクトで視点を設定 ---
view = View3D(
    rot_x=20,
    rot_y=30
)

# --- Step3: グラフにView3Dを適用 ---
chart.view3d = view

# シートにグラフを追加
ws.add_chart(chart, "E2")

# Excelファイルを保存
wb.save("view3d_basic_sample.xlsx")

print("3D視点を設定したグラフを含むExcelファイルを作成しました。")

このコードを実行して生成されたExcelファイルを開くと、グラフが指定通りに傾いて表示されているはずです。

【応用】View3Dの主要プロパティを使いこなす

View3Dの魅力は、回転以外にも様々な調整ができる点にあります。 結論として、rot_xrot_y以外のプロパティも活用することで、さらに表現力豊かで分かりやすい3Dグラフを作成できます。

グラフの回転を細かく調整する (rot_x, rot_y)

先ほど紹介したrot_xrot_yは、最も多用するプロパティです。値を変えるとどのように見えるか、いくつかパターンを見てみましょう。

  • rot_x=0, rot_y=0: グラフを真正面から見た状態。
  • rot_x=30, rot_y=0: グラフを少し上から見下ろした状態。
  • rot_x=15, rot_y=45: 最も一般的で見やすい、少し斜め上からの視点。
  • rot_x=90, rot_y=0: グラフを真上から見た状態(棒グラフなどはただの四角形に見えます)。

データ系列が奥にあって見えにくい場合などは、rot_yの値を調整して最適な角度を探してみてください。

遠近感(パース)を調整する (perspective)

perspectiveプロパティは、グラフの遠近感(パース)の強さを0から100の整数で設定します。

  • perspective=0: 遠近感がなくなり、平行投影(アイソメトリック図法)のような見た目になります。技術的な図面などで使われる表現です。
  • perspective=30 (デフォルト): 標準的な遠近感です。
  • perspective=100: 遠近感が非常に強くかかり、手前が大きく、奥が極端に小さく見えます。
# 強い遠近感を設定
view_strong_perspective = View3D(
    rot_x=20,
    rot_y=30,
    perspective=80 # 遠近感を強くする
)
chart.view3d = view_strong_perspective

意図的にダイナミックな表現をしたい場合に有効なプロパティです。

奥行きや高さを強調する (depth_percent, h_percent)

これらのプロパティは、グラフ自体の形状を調整します。

  • depth_percent: グラフエリアの奥行きの割合を、グラフの幅に対するパーセンテージ(例: 100で幅と同じ奥行き)で指定します。数値を大きくすると、グラフが前後に長くなります。
  • h_percent: グラフの高さの割合を、グラフの幅に対するパーセンテージで指定します。棒グラフなどで数値を大きくすると、棒が通常より高く描画され、より高くそびえ立つような印象を与えます。
# 奥行きと高さを強調
view_emphasized = View3D(
    rot_x=20,
    rot_y=30,
    depth_percent=200, # 奥行きを通常の2倍に
    h_percent=150      # 高さを通常の1.5倍に
)
chart.view3d = view_emphasized

これらのプロパティを組み合わせることで、ExcelのGUIだけでは難しい、ユニークな表現の3Dグラフを作り出すことが可能です。

まとめ

今回は、Pythonのopenpyxlライブラリで3Dグラフの見た目を自在に操るView3D機能について、基本的な使い方から応用的なプロパティまでを解説しました。

この記事の重要なポイントをもう一度振り返りましょう。

  • View3Dは、3Dグラフの視点や回転をコードで制御するための機能です。
  • BarChart3DPieChart3Dなど、3D対応のグラフオブジェクトのview3dプロパティに設定して使用します。
  • rot_xrot_yでグラフの傾きと左右の回転を調整するのが基本です。
  • perspectivedepth_percentなどのプロパティを駆使することで、遠近感や形状を調整し、さらに細かい見た目のカスタマイズが可能になります。

View3Dを使いこなせば、Pythonで自動生成するExcelレポートの表現力と分かりやすさが格段に向上します。ぜひあなたのプロジェクトにも取り入れて、単なるデータの羅列ではない、「伝わる」レポート作成を目指してみてください。

コメント

タイトルとURLをコピーしました