質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1745閲覧

Plotly Dashで、tableが表示されない。

H.K2

総合スコア88

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/04/17 08:54

前提・実現したいこと

excelやDBから読み込んだデータをもとに、dashで可視化を行うプログラムを作成しようとしています。
その中で、サンプルとなるサイトを見つけ、そのコードを改造していこうとしたのですが、
そのままのコードでは自分の環境のライブラリバージョンではエラーが出てしまったので、
コードを書き換えました。

参考URL

発生している問題・エラーメッセージ

上記サイトの例で表示される画像では、データフレームのテーブルが表示されているのですが、
改造したサンプルではテーブルが表示されません。

該当のソースコード

python3

1""" Sample App Code with Datatable """ 2# https://towardsdatascience.com/a-short-python-tutorial-using-the-open-source-plotly-dash-library-part-i-e59fb1f1a457 3# https://dash.plotly.com/datatable 4 5# Import Supporting Libraries 6import pandas as pd 7 8# Import Dash Visualization Libraries 9import dash_core_components as dcc 10import dash_html_components as html 11import dash_table as dt 12import dash.dependencies 13from dash.dependencies import Input, Output, State 14import plotly 15 16 17# Load datasets 18US_STATES_URL = 'https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv' 19US_AG_URL = 'https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv' 20df_st = pd.read_csv(US_STATES_URL) 21df_ag = pd.read_csv(US_AG_URL) 22print(df_st.head()) 23print(df_ag.head()) 24 25 26# Create our app layout 27app = dash.Dash(__name__) 28server = app.server 29app.layout = html.Div([ 30 html.H2('My Dash App'), 31 dt.DataTable( 32 id='my-datatable', 33 # rows=df_ag.to_dict('records'), 34 data=df_ag.to_dict('records'), 35 editable=False, 36 row_selectable='single', 37 # filterable=True, # verがあがったことでfilterのオプション名が変更。 38 filter_action='native', 39 # sortable=True, 40 sort_action='native', 41 # selected_row_indices=[] 42 selected_row_ids=[] 43 ), 44 html.Div(id='selected-indexes'), 45 dcc.Graph( 46 id='datatable-subplots' 47 ) 48], style={'width': '60%'}) 49 50 51# @app.callback(Output('my-datatable', 'selected_row_indices'), 52@app.callback(Output('my-datatable', 'selected_row_ids'), 53 [Input('datatable-subplots', 'clickData')], 54 # [State('my-datatable', 'selected_row_indices')]) 55 [State('my-datatable', 'selected_row_ids')]) 56# def updated_selected_row_indices(clickData, selected_row_indices): 57def updated_selected_row_indices(clickData, selected_row_ids): 58 if clickData: 59 for point in clickData['points']: 60 if point['pointNumber'] in selected_row_ids: 61 selected_row_ids.remove(point['pointNumber']) 62 else: 63 selected_row_ids.append(point['pointNumber']) 64 return selected_row_ids 65 66 67@app.callback(Output('datatable-subplots', 'figure'), 68 # [Input('my-datatable', 'rows'), 69 # Input('my-datatable', 'selected_row_indices')]) 70 [Input('my-datatable', 'data'), 71 Input('my-datatable', 'selected_row_ids')]) 72def update_figure(rows, selected_row_indices): 73 dff = pd.DataFrame(rows) 74 fig = plotly.tools.make_subplots( 75 rows=3, cols=1, 76 subplot_titles=('Beef', 'Pork', 'Poultry'), 77 shared_xaxes=True) 78 marker = {'color': ['#0074D9']*len(dff)} 79 for i in (selected_row_indices or []): 80 marker['color'][i] = '#FF851B' 81 fig.append_trace({ 82 'x': dff['state'], 83 'y': dff['beef'], 84 'type': 'bar', 85 'marker': marker 86 }, 1, 1) 87 fig.append_trace({ 88 'x': dff['state'], 89 'y': dff['pork'], 90 'type': 'bar', 91 'marker': marker 92 }, 2, 1) 93 fig.append_trace({ 94 'x': dff['state'], 95 'y': dff['poultry'], 96 'type': 'bar', 97 'marker': marker 98 }, 3, 1) 99 fig['layout']['showlegend'] = False 100 fig['layout']['height'] = 1000 101 fig['layout']['width'] = 1200 102 fig['layout']['margin'] = { 103 'l': 40, 104 'r': 10, 105 't': 60, 106 'b': 200 107 } 108 return fig 109 110 111app.css.append_css({ 112 'external_url': 'https://codepen.io/chriddyp/pen/bWLwgP.css' 113}) 114 115 116if __name__ == '__main__': 117 app.run_server(debug=True) 118

試したこと

公式のリファレンスを確認して、コードを書き換えた。

補足情報(FW/ツールのバージョンなど)

dash 1.9.1 py_0 conda-forge
dash-core-components 1.8.1 py_0 conda-forge
dash-daq 0.4.0 py_0 conda-forge
dash-html-components 1.0.2 py_0 conda-forge
dash-renderer 1.2.4 py_0 conda-forge
dash-table 4.6.1 py_0 conda-forge
dash_cytoscape 0.1.1 py_0 conda-forge
pandas 1.0.1 py37h47e9c7a_0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問