Dash のインストールと動作確認

【概要】 DashはWebでグラフや表を簡単に表示し,ユーザによる操作を可能にするPythonフレームワークです.このページでは,WindowsとUbuntu環境でのDashのインストール方法と基本的な使用方法を説明しています.まず,Python環境の準備とDash関連パッケージのインストール手順を示し,次に簡単なグラフ表示プログラムによる動作確認を行います.さらに,データを定期的に更新する応用プログラムの実装方法も解説しています.マルチスレッドを使用してデータの更新とWeb表示を効率的に行う方法も含まれています.

サイト内の関連ページ

【関連する外部ページ】

前準備

Python の準備(Windows,Ubuntu 上)

サイト内の関連ページ

関連する外部ページPython の公式ページ: https://www.python.org/

Dash のインストール,動作確認

Python パッケージをインストールします。

  1. Windows では,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)します。

    コマンドプロンプトを管理者として実行する方法については,別ページ »で説明しています。

  2. dash,dash-daq のインストール

    【関連する外部ページ】 https://dash.plotly.com/

  3. Dash の動作確認
    1. Python プログラムの作成

      Windows の場合, コマンドプロンプトで次のコマンドを実行します。

      cd /d c:%HOMEPATH%
      notepad hoge.py
      

      次のPython プログラムをhoge.pyというファイル名で保存します。

      # -*- coding: utf-8 -*-
      import dash
      import dash_core_components as dcc
      import dash_html_components as html
      
      external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
      
      app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
      
      app.layout = html.Div(children=[
          html.H1(children='Hello Dash'),
      
          html.Div(children='''
              Dash: A web application framework for Python.
          '''),
      
          dcc.Graph(
              id='example-graph',
              figure={
                  'data': [
                      {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                      {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montral'},
                  ],
                  'layout': {
                      'title': 'Dash Data Visualization'
                  }
              }
          )
      ])
      
      if __name__ == '__main__':
          app.run_server(debug=True)
      
    2. Python プログラムの実行

      Python プログラムの実行方法については,別ページ »で説明しています。

      Python の詳細については,別ページ »にまとめています。

    3. Web ブラウザで localhost:8050 にアクセスします。次のような画面が表示されれば動作確認完了です。

Dash の内容を定期的に更新するプログラム

注意点:

プログラムのポイント:

# -*- coding: utf-8 -*-
import dash
import dash_table
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd

import time
import threading

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

L = [[1, 2, 3], [4, 1, 2]]
X = pd.DataFrame(L)

def do_layout():
    global app
    app.layout = html.Div(children=[
        html.H1(children='Hello Dash'),

        html.Div(children='''
            Dash: A web application framework for Python.
        '''),

        dash_table.DataTable(
            id='table',
            columns=[ {"name": i, "id": i} for i in X.columns],
            data=X.to_dict("rows")
        )
    ])

import time
import threading

# 定期的に実行されるスレッド
def worker():
    global X
    do_layout()
    print(time.gmtime())
    X[0][0] = X[0][0] + 1
    print(X[0][0])
    # 動作確認のため8秒間待機
    time.sleep(8)

def mainloop():
    # 5秒間隔で実行
    time_interval = 5
    now = time.time()
    while True:
        t = threading.Thread(target=worker)
        t.start()
        t.join()
        wait_time = time_interval - ( (time.time() - now) % time_interval )
        print(wait_time)
        time.sleep(wait_time)

if __name__ == '__main__':
    t0 = threading.Thread(target=mainloop)
    t0.start()
    # マルチスレッド実行時はdebug=Falseを指定
    app.run_server(debug=False)