在 Streamlit 页面上显示图表时出现“‘Figure’对象不可调用错误”

问题描述 投票:0回答:1

我在同时使用 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 图表。

您知道它从何而来以及如何解决这个问题吗?

python-3.x charts plotly streamlit figure
1个回答
0
投票

我添加了

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)
© www.soinside.com 2019 - 2024. All rights reserved.