我在同时使用 Plotly 和 Streamlit 时遇到问题:
如果我单独执行代码,我创建的图表工作正常,但是一旦我将图形放入 st.plotly_chart 中,我就会收到“Figure”对象不可调用错误。
这是图表代码:
import pandas as pd
import plotly.express as px
d = {'Country': ['Portugal', 'Singapore', 'Norway', 'Mexico'],
'Rank': [33, 32, 30, 29],
'Documents': [9950, 10154, 10892, 11073],
'Citations': [110328, 134823, 176569, 103293],
'H.index': [297, 349, 402, 289]
}
df = pd.DataFrame(data=d)
fig = px.scatter(x = pays_prod_moy['Citations'],
y = pays_prod_moy['Documents'],
size = pays_prod_moy['H.index'],
color = pays_prod_moy['Rank'],
hover_name = pays_prod_moy['Country'],
log_x=True,
size_max=40,
color_continuous_scale='RdBu')
fig.update_layout(
xaxis_title="Average Documents",
yaxis_title="Average Citations",
coloraxis_colorbar_title="Rank"
)
st.plotly_chart(fig, use_container_width=True)
我发现它可以来自语法,所以我检查了它,但当我粘贴 Plotly 文档中的示例图表代码时,我遇到了同样的问题。这两个库都是刚刚安装的。它适用于 Altair 图表。
您知道它从何而来以及如何解决这个问题吗?
我添加了
import streamlit as st
,将数据框重命名为 pays_prod_mod
并且它有效。
您的代码将是:
import pandas as pd
import plotly.express as px
import streamlit as st
d = {'Country': ['Portugal', 'Singapore', 'Norway', 'Mexico'],
'Rank': [33, 32, 30, 29],
'Documents': [9950, 10154, 10892, 11073],
'Citations': [110328, 134823, 176569, 103293],
'H.index': [297, 349, 402, 289]
}
pays_prod_moy = pd.DataFrame(data=d)
fig = px.scatter(x = pays_prod_moy['Citations'],
y = pays_prod_moy['Documents'],
size = pays_prod_moy['H.index'],
color = pays_prod_moy['Rank'],
hover_name = pays_prod_moy['Country'],
log_x=True,
size_max=40,
color_continuous_scale='RdBu')
fig.update_layout(
xaxis_title="Average Documents",
yaxis_title="Average Citations",
coloraxis_colorbar_title="Rank"
)
st.plotly_chart(fig, use_container_width=True)