前提・実現したいこと
最近、Webアプリのフレームワークstreamlitを知り、BI的なWebアプリが驚くほど簡単に作れることに感動しています。
グラフライブラリにBokehを使えるので、この組み合わせは最強だと思います。
さて、質問ですが、「BokehのDatatableを使用して特定の列にURLデータを
格納しておき、それをクリックするとリンク先に飛ぶ」という機能を実装したいです。
ネットで調べると以下のサイトがヒットし、簡単なコードで実現できそうでした。
参考サイト:
https://discuss.streamlit.io/t/make-streamlit-table-results-hyperlinks-or-add-radio-buttons-to-table/7883
このサイトのサンプルは列が一つなのでそれをアレンジして複数列のDatatableを
作成したところ、URLデータ以外の列もリンクが張られてしまいます。
対処方法を教えて下さい。
該当のソースコード
Python
1# 2# 参考サイト:Make Streamlit table results hyperlinks or add radio buttons to table? 3# https://discuss.streamlit.io/t/make-streamlit-table-results-hyperlinks-or-add-radio-buttons-to-table/7883 4# 5# 実行は streamlit run datatable_hyperlink_sample.py 6# ブラウザでは http://localhost:8501/ 7 8 9import streamlit as st 10import pandas as pd 11from bokeh.plotting import figure 12 13from bokeh.models import ColumnDataSource, CustomJS 14from bokeh.models import DataTable, TableColumn, HTMLTemplateFormatter, NumberFormatter 15 16 17df = pd.DataFrame({ 18 "id": [1,2,3], 19 "score": [0.1, 0.2, 0.3], 20 "links": ["https://www.google.com", "https://streamlit.io", "https://outlook.com"], 21}) 22cds = ColumnDataSource(df) 23columns = [ 24TableColumn(field="id", title="id"), 25TableColumn(field="score", title="Score", formatter=NumberFormatter(format="0.00")), 26TableColumn(field="links", title="links", formatter=HTMLTemplateFormatter(template='<a href="<%= links %>"target="_blank"><%= value %>')), 27] 28p = DataTable(source=cds, columns=columns, css_classes=["my_table"]) 29st.bokeh_chart(p)
試したこと
上記コードを実行するとブラウザで下図のように表示されます。
1行の♯、idやScoreのデータに上の行のGoogleのリンクが張られてしまいます。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。