如何防止 ipywidget 的输出文本在 Jupyter Notebook 中打印?

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

我正在尝试使用变量选择器通过变量绘制数据框以节省空间。但是,在绘图时,将打印之前选择的所有信息。

我已经尝试过:


import plotly.express as px
import pandas as pd
from ipywidgets import interact, widgets, Output
from IPython.display import display, clear_output
from sklearn.datasets import load_iris

iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['species'] = iris.target_names[iris.target]

text_output = Output()

def update_boxplot(variable):
    clear_output(wait=True)
    with text_output:
        display(widgets.Label(value=f"Variable: {variable}"))
    
    fig = px.box(df, x='species', y=variable,
                 title=f"Boxplot of {variable}",
                 labels={'species': 'Species', variable: variable})
    fig.show()

variable_selector = widgets.Dropdown(options=iris.feature_names, description='Variable:')
interact(update_boxplot, variable=variable_selector)
display(text_output)


我得到:

我想隐藏之前的选择。

python jupyter-notebook plotly ipython ipywidgets
1个回答
0
投票

试试这个:

import pandas as pd
import plotly.express as px

from IPython.display import clear_output, display
from ipywidgets import Output, interact, widgets
from sklearn.datasets import load_iris


iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df["species"] = iris.target_names[iris.target]

text_output = Output()


def update_boxplot(variable):
    clear_output(wait=True)
    with text_output:
        display(widgets.Label(value=f"Variable: {variable}"))

    fig = px.box(
        df,
        x="species",
        y=variable,
        title=f"Boxplot of {variable}",
        labels={"species": "Species", variable: variable},
    )
    fig.show()


variable_selector = widgets.Dropdown(
    options=iris.feature_names, description="Variable:"
)
_ = interact(update_boxplot, variable=variable_selector)


说明

代码中的最后一行因突出显示的打印问题而出现错误(

display(text_output)
)。事实上 - 该行正在显示您的 ipywidget 的文本输出。

我所做的唯一其他更改是将

interact
函数分配给一个不起眼的下划线变量“
_
”(想要忽略某些变量时的常见约定)。这可以防止其他无关文本(在本例中为
interact
的函数描述符 [即“
<function __main__.update_boxplot(variable)>
”])打印到 Jupyter Notebook 中单元格下方的输出。

© www.soinside.com 2019 - 2024. All rights reserved.