LoginSignup
8
6

More than 1 year has passed since last update.

HTMLでもmatplotlibが使えるってよ。なんならPythonも使えるってよ。

Last updated at Posted at 2022-05-02

はじめに

Java ScriptならぬPyScriptがリリースされたようです。
少し試してみました。

表示結果

HTMLファイルで、PyScriptを実装しmatplotlibで可視化できるか実験してみました。
ブラウザの表示結果を下記に示します。
確かに動作していることがわかります。
動作が重かったのが難点かなと思いました。

image.png

ソースコード

HTMLファイルのソースコードを下記に置きます。
リーダブルコードだなというのが印象です。

<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
    </py-env>
    </head>
    <body>
      <div id="mpl"></div>
      <py-script output="mpl">
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import numpy as np

# First create the x and y coordinates of the points.
n_angles = 36
n_radii = 8
min_radius = 0.25
radii = np.linspace(min_radius, 0.95, n_radii)

angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi / n_angles

x = (radii * np.cos(angles)).flatten()
y = (radii * np.sin(angles)).flatten()
z = (np.cos(radii) * np.cos(3 * angles)).flatten()

# Create the Triangulation; no triangles so Delaunay triangulation created.
triang = tri.Triangulation(x, y)

# Mask off unwanted triangles.
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
                         y[triang.triangles].mean(axis=1))
                < min_radius)

fig1, ax1 = plt.subplots()
ax1.set_aspect('equal')
tpc = ax1.tripcolor(triang, z, shading='flat')
fig1.colorbar(tpc)
ax1.set_title('tripcolor of Delaunay triangulation, flat shading')

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

参照

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6