我用Python创建了一个Dash应用程序来展示我执行的一些主题分析的结果。对于主题分析,有一个很好的可视化工具叫做pyLDAvis。我使用了这个工具,并将其输出保存为一个名为lda.html
的html文件:
# Visualisatie
topic_data = pyLDAvis.gensim.prepare(ldamodel, doc_term_matrix, dictionary, mds = "mmds")#mds = 'pcoa')
pyLDAvis.save_html(topic_data, 'lda.html')
pyLDAvis.display(topic_data)
我当前的Dash应用程序包含一个可以根据多个主题进行过滤的表。在该表下面,我想展示lda.html
。下面的代码包含了我所做的一些尝试
#import os
#STATIC_PATH = os.path.join(os.path.dirname(os.path.abspath('lda.html')), 'static')
#STATIC_PATH
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.graph_objects as go
import plotly.express as px
import dash_dangerously_set_inner_html
from dash import dash_table
from dash.dependencies import Input
from dash.dependencies import Output
app = dash.Dash()
topics = df_topics_wegschrijven['Topic'].unique().tolist()
app.layout = html.Div(
children=[
dcc.Dropdown(
id="filter_dropdown",
options=[{"label": tp, "value": tp} for tp in topics],
placeholder="Selecteer een topic",
multi=True,
value=df_topics_wegschrijven.Topic.unique(),
),
dash_table.DataTable(id = "table-container",
data = df_topics_wegschrijven.to_dict('records'),
columns = [{"name": i, "id": i} for i in df_topics_wegschrijven.columns],
),
#html.Iframe(src='/static/lda.hmtl'), #style=dict(position="absolute", left="0", top="0", width="100%", height="100%"))
html.Iframe(src=r"C:\Users\MyUserName\Documents\lda.html")
#html.Iframe(topic_data)
]
)
@app.callback(
Output("table-container", "data"),
Input("filter_dropdown", "value")
)
def display_table(topic):
dff = df[df_topics_wegschrijven.Topic.isin(topic)]
return dff.to_dict("records")
if __name__ == '__main__':
app.run_server(debug=False)
此代码输出以下内容:
正如您所看到的,这里有一个空白的白色方块,我希望我的lda.hmtl
在这里。对于我注解掉的代码,结果是:
1.请检查您输入的网址是否正确,如果您是手动输入的,请检查您输入的网址是否正确,然后再试一次。
- Iframe(topic_data)-〉整个dash应用程序变成“加载布局时出错”。
在我看来,我在未注解代码中所做的应该是正确的(即,除了正方形为空之外,没有错误反馈),但我不明白为什么它返回一个空正方形。
当我尝试
import webbrowser
webbrowser.open_new_tab('lda.html')
可视化按预期加载。我只是不能让它在我的Dash应用程序中工作。
有人对我如何解决问题并将pyLDAvis html文件正确加载到Dash有什么建议吗?
1条答案
按热度按时间twh00eeo1#
您将文件扩展名写为
.hmtl
而不是.html
。这可能是第一个问题的原因。更新
我注意到你把
lda.html
放到了static
文件夹中。在Dash中,assets
文件夹用于存储外部资源。或者更像Python