matplotlibによるアニメーション

下記を参考にmatplotlibのアニメーションを試してみた。

  1. matplotlib.animationでグラフをアニメーションさせる – Qiita
  2. [Python/matplotlib] FuncAnimationを理解して使う – Qiita

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

MAX_FRAME = 100

def plot(frame):
    """."""
    plt.cla()
    xs1 = np.arange(0, 10, .01)
    ys1 = np.sin(xs1)
    xs2 = np.arange(0, 10.0 / MAX_FRAME * frame, .01)
    ys2 = np.sin(xs2)
    _ = plt.scatter(xs1, ys1)
    _ = plt.scatter(xs2, ys2)

ani = animation.FuncAnimation(fig, plot, frames=range(MAX_FRAME), interval=100)
ani.save(f, writer="imagemagick")
plt.close()
f
matplotlib_anim.gif

udev

サスペンドからの復帰可能デバイスの設定

下記の2つのページを参考に設定する。

  1. 20.04 – Mouse movement wakes system up from sleep if the USB adapter is not reconnected – Ask Ubuntu
  2. 復帰トリガー – ArchWiki

具体的にはマウスによるサスペンドからの復帰を阻止したい。まず、マウスのデバイス情報を lsusb で取得する。

lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 25a7:fa10 Areson Technology Corp 2.4G Wireless Receiver
Bus 001 Device 004: ID 2be8:0002 ARCHISS PTR87 ARCHISS PTR87
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 006: ID 0b05:19af ASUSTek Computer, Inc. AURA LED Controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

25a7:fa10 がマウスに対応する情報である。ワイヤレス・マウスであるため、レシーバがUSB機器として認識されている。 25a7 がベンダーIDで fa10 が製品IDとなる。

/etc/udev/rules.dwireless_mouse.rules を作成する。

ls /etc/udev/rules.d

keyboard.rules
wireless_mouse.rules

wireless_mouse.rules に下記を記載する。 idVendor にベンダーID、 idProduct に製品IDを割り当てる。 ATTR{power/wakeup} がサスペンド時に考慮される機器の設定でこのマウスでは復帰させたくないため diabled を設定する。

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="25a7", ATTRS{idProduct}=="fa10", ATTR{power/wakeup}="disabled"

PCを終了し、起動すれば設定が反映されサスペンド時にマウスでの復帰は行なわれなくなる。