\

Pythonでリアルタイムにグラフを更新する方法はいくつかあります。ここでは、matplotlibとDashの2つの方法を紹介します。

Matplotlibを使用した方法

matplotlibを使用してリアルタイムにグラフを更新する方法は以下の通りです。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6*np.pi, 100)
y = np.sin(x)

plt.ion()

fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-')

for phase in np.linspace(0, 10*np.pi, 500):
    line1.set_ydata(np.sin(x + phase))
    fig.canvas.draw()
    fig.canvas.flush_events()

このコードでは、plt.ion()を使用してインタラクティブモードをオンにし、fig.canvas.draw()fig.canvas.flush_events()を使用してグラフをリアルタイムに更新しています。

Dashを使用した方法

Dashを使用してリアルタイムにグラフを更新する方法もあります。以下にその一例を示します。

import dash
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output
import datetime
import plotly
import psutil

app = dash.Dash(__name__)

app.layout = html.Div(children=[
    html.H4('システムモニタ'),
    html.Div(id='live-update-text'),
    dcc.Graph(id='live-update-graph'),
    dcc.Interval(
        id='interval-component',
        interval=1*1000,
        n_intervals=0
    )
])

@app.callback(Output('live-update-text', 'children'),
              [Input('interval-component', 'n_intervals')])
def update_metrics(n):
    now = datetime.datetime.now()
    style = {'padding': '5px', 'fontSize': '16px'}
    return [
        html.Span('CPU: {}%'.format(psutil.cpu_percent()), style=style),
        html.Span('Memory: {}%'.format(psutil.virtual_memory().percent), style=style)
    ]

@app.callback(Output('live-update-graph', 'figure'),
              [Input('interval-component', 'n_intervals')])
def update_graph_live(n):
    # ここにグラフを更新するコードを書く
    pass

if __name__ == '__main__':
    app.run_server(debug=True)

このコードでは、Dashのdcc.Intervalコンポーネントを使用して定期的にグラフを更新しています。update_metricsupdate_graph_liveの2つのコールバック関数が定義されており、それぞれテキストとグラフを更新しています。

以上、Pythonでリアルタイムにグラフを更新する2つの方法を紹介しました。具体的な実装はプロジェクトの要件によりますが、これらの方法を参考にしてみてください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です