見出し画像

PyscriptでMatplotlib

久しぶりにPython関係の記事を書いてみようと思います。
というのも、非常に面白いものを見つけたからです。
それは「Pyscript」です。

もうご存知のかたも多いかと思います。
HTML内にPythonコードを書いて、実行させるという非常に興味深いものです。

とはいえ、実は知ってから数日は動けませんでした。
なにせネガティブシンカーなので。
「えーどうせ難しいんでしょう」とか。

ところがある動画に出会いました。

Python Vtuberさぶーさんが紹介していた動画です。
見た感想、「あれ、簡単そう」
というので早速実行してみました。

まずPyscriptのサイトはこちらになります。

demo も

こちらにあるので、いろいろ試せそうです。
まずはMatplotlibから試してみることにしました。
demoと同じでは面白くないので、Matplotlibのサイトからこちらもdemoを参考にしました。

こちら、3D surface plot を試してみることにしました。
とはいえ、やったことは非常に簡単。
Pyscriptのdemoに、Matplotlibのdemoを入れ込んだだけです。 

<html>
  <head>
    <title>Matplotlib</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
    <py-env>
      - matplotlib
      - numpy
    </py-env>
    </head>
    <body>
      <div id="mpl"></div>
      <py-script output="mpl">
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import numpy as np

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

# Customize the z axis.
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
# A StrMethodFormatter is used automatically
ax.zaxis.set_major_formatter('{x:.02f}')

# Add a color bar which maps values to colors.
fig.colorbar(surf, shrink=0.5, aspect=5)

fig
      </py-script>
    </body>
</html>

で表示された画像がタイトル画像にもなっている、3D surface plot (color map)の画像です。

    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>

で、Pyscriptを使えるようにJSを読み込んで、
py-scriptタグ内でPythonコード(今回はMatplotlibのdemoコード)を入れておわりです。
必要なライブラリは、py-envタグ内に書いておきます。

意外に簡単にここまで出来てしまいました。
py-scriptタグ内を書き換えればいいだけですので、
よかったら皆様も試してみてください。

py-envタグで使えるライブラリは Pyodide のサイトから調べることができます。
すべてのライブラリが使えるわけでなないようです。
それでも、numpy, pandas, matplotlib, scipy, scikit-learnが使えるので、いろいろ試せそうですね。


いいなと思ったら応援しよう!