🍣

スライドで3Dグラフをぐりぐりしたい

2024/12/14に公開

はじめに

PowerPointでスライドをつくっている時に,3次元のグラフを挿入しようとして困ったことはないでしょうか.
PowerPointだと難しいですが,Marpを使えば簡単にできます.

準備:グラフをつくる

グラフはPythonでつくります.matplotlibでも3次元のグラフは作成できますが,画像形式でしか保存できないので,今回はplotlyを用います.

とりあえず例として適当なグラフを作ります.用いるデータは以下のものです(0から1の範囲で(x,y,z)の乱数の組を発生させたもの).

data.csv
x,y,z
0.7765197834206082,0.26926129595429993,0.5132909584693258
~~ 以下略 ~~

この散布図を作成するプログラムが以下です.

import pandas as pd
import plotly.graph_objects as go

# データ読み込み
df = pd.read_csv("data.csv")

# 散布図を作成
fig = go.Figure()
fig.add_trace(
    go.Scatter3d(
        x=df["x"],
        y=df["y"],
        z=df["z"],
        mode="markers",
        marker=dict(size=4)
    )
)

# タイトルや軸ラベル
fig.update_layout(
    title="3次元乱数",
    scene=dict(
        xaxis_title="X",
        yaxis_title="Y",
        zaxis_title="Z"
    ),
)

# グラフを表示
fig.show()

# グラフを保存
fig.write_html("plot.html")

fig.write_html()とすることでグラフをhtmlファイルとして保存することができます.

準備:Marpを使えるようにする

VScodeで拡張機能から「Marp for VS Code」をインストールします.

インストールしたら適当なmdファイルを作成し,スライドを作ってみます.

slide.md
---
marp: true
theme: gaia
paginate: true
---
# 1.はじめに


---
# 2.ほげほげ

---

実際に書いてみたらプレビューを開いてみましょう.Ctrl+Kを押した後にVを押すことで画面の右側にプレビュー画面が出ます.

上のようにスライド形式で表示されない場合は,Ctrl+Shift+Pでコマンドパレットを開き,「Toggle Marp Feature For Current Markdown」を選択します.そうすると,以下のようにスライド形式でプレビューされます.

---がページの区切りになっていて,一番最初の部分でmarpを使うことやテーマ,ページ番号の有無を設定しています.

ここまで,できれば準備完了です.

実際にグラフを貼り付ける

さきほど生成したplot.html<iframe>タグで挿入すればOKです.スライド2枚目に挿入する場合は,以下のようにします.

slide.md
---

# 2.グラフを貼る

<iframe src="plot.html" width="800pt" height="500pt"></iframe>

---

widthheightで挿入される横幅と高さを指定できます.
プレビューではグラフは表示されませんが大丈夫です.

<iframe src="plot.html" width="800pt" height="500pt"></iframe>がそのまま表示されてしまう場合は,拡張機能の設定画面で以下のようにHTMLを有効にしましょう.

スライドが完成したら,スライドをHTML形式で保存します.コマンドパレットを開き,「Marp:Export Slide Deck」を選択します.PDF等別の形式で保存されてしまう場合は,先ほど同様,拡張機能の設定を開き,エクスポートの形式をHTMLにします.

保存したHTMLをブラウザ等で開くと,ぐりぐり操作できる状態でスライド内に挿入できていることが確認できます.

Discussion