Plotly express - 使用下拉菜单绘制直方图不同列的代码
Posted
技术标签:
【中文标题】Plotly express - 使用下拉菜单绘制直方图不同列的代码【英文标题】:Plotly express - code for plotting different columns of a histogram with a dropdown 【发布时间】:2021-09-04 16:14:46 【问题描述】:目前,我正在使用以下代码将数据绘制为直方图。
import plotly.express as px
fig = px.histogram(df, x="col_1")
fig.show()
有没有办法让下拉菜单控制数据框的哪一列绘制在直方图中?还是没有办法用 plotly express 做到这一点?
在任何一种情况下,我都需要什么代码来实现这个功能?谢谢。
【问题讨论】:
【参考方案1】:我不确定这在 plotly express 中是否可行。您可以一次添加一个跟踪,然后将按钮列表传递给update_layout
函数的updatemenus
参数,该函数控制每个跟踪的visible
参数。
这是一个使用 plotly 财务数据集的一些列的示例:
import plotly.graph_objects as go
import pandas as pd
# Load dataset
df = pd.read_csv(
"https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv")
df.columns = [col.replace("AAPL.", "") for col in df.columns]
df = df.set_index("Date")
df = df[["Open","High","Low","Close","Volume"]]
# Initialize figure
fig = go.Figure()
buttons = []
for col_name in df.columns:
## add traces
if col_name == "Open":
fig.add_trace(go.Scatter(
x=df.index,
y=df[col_name],
name=col_name,
visible=True
)
)
else:
fig.add_trace(go.Scatter(
x=df.index,
y=df[col_name],
name=col_name,
visible=False
)
)
## construct buttons
buttons.append(dict(
label=col_name,
method="update",
args=["visible": [col_name==col for col in df.columns],
"title": "Yahoo"]))
buttons_list = list(buttons)
fig.update_layout(
updatemenus=[
dict(buttons=buttons_list)
])
fig.show()
【讨论】:
以上是关于Plotly express - 使用下拉菜单绘制直方图不同列的代码的主要内容,如果未能解决你的问题,请参考以下文章
如何根据不同的dataFrame部分绘制(plotly.express)多条线