You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Streamlit中渲染toad库bin_plot返回的Matplotlib图表?

解决Toad bin_plot在Streamlit中无错误渲染的问题

问题核心:toad.plot.bin_plot()返回的是AxesSubplot对象,而Streamlit的st.pyplot()需要接收Figure对象作为输入,直接传入AxesSubplot会触发savefig属性不存在的错误。

解决方案

通过AxesSubplot对象的figure属性获取其所属的父级Figure,再将该Figure传入st.pyplot()即可正常渲染且无错误。

完整示例代码

import streamlit as st
import pandas as pd
from sklearn import datasets
from toad.plot import bin_plot

# 加载并处理数据集
iris_data = datasets.load_iris()
iris_df = pd.DataFrame(data=iris_data['data'], columns=iris_data['feature_names'])
iris_df['Iris_type'] = iris_data['target']
iris_df = iris_df.loc[iris_df.Iris_type != 2]

# 生成bin_plot并获取对应的Figure
ax = bin_plot(iris_df, iris_df.columns[0], target='Iris_type')
fig = ax.figure

# 在Streamlit中渲染图表
st.pyplot(fig)

原理说明

  • bin_plot()默认会自动创建一个新的Figure和AxesSubplot,并返回AxesSubplot对象,我们可以通过ax.figure直接获取这个自动生成的Figure。
  • st.pyplot()内部依赖Figure的savefig方法生成可渲染内容,因此必须传入Figure对象而非AxesSubplot。

内容的提问来源于stack exchange,提问作者ViSa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:52:34