【问题标题】:Streamlit multiselect boxplot with precalculated quantiles带有预先计算的分位数的 Streamlit 多选箱线图
【发布时间】:2022-10-06 08:35:56
【问题描述】:

嗨,我希望有人能提供帮助……我正在尝试根据侧边栏中的选择绘制箱线图。假设我在下表中已经预先计算了分位数值。我正在尝试在特定日期为每个功能构建一个箱线图。因此,如果我选择一个特征和 2 个日期,它将在一行中显示两个箱线图。如果我选择在 2 个日期上显示,那么 2 行和 2 列。但是,每个功能都需要有自己的规模,因为范围完全不同。

这是我到目前为止所做的,但看起来不太好。一切都太挤了,我什至不认识箱线图。有任何想法吗?

import pandas as pd
import streamlit as st
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots

df = pd.read_csv(\"file.csv\")
date_choice = st.sidebar.selectbox(\"Date\", df[\"date\"])    
feature_choice = st.sidebar.multiselect(\"Features\", df[\"feature\"])

ncols = len(date_choice)
nrows = len(feature_choice)
fig = make_subplots(rows=nrows, cols=ncols)

for i in range(1, nrows + 1):
for j in range(1, ncols + 1):
    fig.add_trace(go.Box(lowerfence = df[\"min\"], q1 = df[\"q25\"]
    , median = df[\"q50\"], q3 = df[\"q75\"], upperfence = df[\"max\"])
    , row=i, col=j)

st.plotly_chart(fig)
feature date min q25 q50 q75 max
a 2022-01-01 0 12 90 1500 4000
a 2022-01-02 0 25 100 1300 3500
b 2022-01-01 9000 21000 50000 90000 150000
b 2022-01-02 8000 15000 60000 95000 200000
c 2022-01-01 30 40 50 60 70
c 2022-01-02 35 45 55 65 75
  • 你的尝试是什么?

标签: plotly boxplot subplot plotly-python streamlit


【解决方案1】:

我会将其添加到文件的顶部:

st.set_page_config(layout="wide")

最重要的是,st.plotly_chart(fig, use_container_width=True) 似乎解决了大部分问题。通过这两个更改,绘制两个功能和两个日期looked like this on my end.

您提到选择多个日期但使用st.selectbox,所以我将其更改为st.multiselect

如果您添加更多功能(即行),图表会被挤压一点,因此您可能希望为每个箱形图指定一个(最小)高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2014-07-02
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多