我正在尝试使用变量选择器通过变量绘制数据框以节省空间。但是,在绘图时,将打印之前选择的所有信息。
我已经尝试过:
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)
我得到:
我想隐藏之前的选择。
试试这个:
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 中单元格下方的输出。