首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dash选择ID,然后用Slider绘图

Dash选择ID,然后用Slider绘图
EN

Stack Overflow用户
提问于 2022-11-08 14:47:47
回答 1查看 47关注 0票数 2

我有一个与下面类似的数据集。请注意,一个ID有多个值。

代码语言:javascript
复制
import pandas as pd
import numpy as np
import random

df = pd.DataFrame({'DATE_TIME':pd.date_range('2022-11-01', '2022-11-05 23:00:00',freq='h'),
                   'SBP':[random.uniform(110, 160) for n in range(120)],
                   'DBP':[random.uniform(60, 100) for n in range(120)],
                   'ID':[random.randrange(1, 100) for n in range(120)],
                   'TIMEINTERVAL':[random.randrange(1, 200) for n in range(120)]})

df['VISIT'] = df['DATE_TIME'].dt.day

df['MODE'] = np.select([df['VISIT']==1, df['VISIT'].isin([2,3])], ['CKD', 'Dialysis'], 'Late TPL')

我想使用Dash,这样我就可以先选择ID,然后绘制出所选ID的图,此外,我还做了一个滑块,以分钟来选择测量之间的时间间隔。

我的问题是我不能同时实现滑块和在Dash中选择ID。如何将以下函数集成到我的Dash代码中?或者,我如何选择ID拳头,然后用它来制作情节呢?

代码语言:javascript
复制
# function to choose ID
def choose_id(dataframe_name, id_number):
    return dataframe_name[dataframe_name['ID']==id_number]
#patient = choose_id(df, 9)

我使用以下破折号代码来制作滑块:

代码语言:javascript
复制
app = Dash(__name__)


app.layout = html.Div([
    html.H4('Interactive Scatter Plot with ABPM dataset'),
    dcc.Graph(id="scatter-plot"),
    html.P("Filter by time interval:"),
    dcc.Dropdown(df.ID.unique(), id='pandas-dropdown-1'), # for choosing ID,
    dcc.RangeSlider(
        id='range-slider',
        min=0, max=600, step=10,
        marks={0: '0', 50: '50', 100: '100', 150: '150', 200: '200', 250: '250', 300: '300', 350: '350', 400: '400', 450: '450', 500: '500', 550: '550', 600: '600'},
        value=[0, 600]
    ),
    html.Div(id='dd-output-container')
])


@app.callback(
    Output("dd-output-container", "children"),
    Output("scatter-plot", "figure"),
    Input("pandas-dropdown-1", "value"),
    Input("range-slider", "value"))

def update_bar_chart(value,slider_range):
    patient = choose_patient(df, value)
    df = patient 
    low, high = slider_range
    mask = (df['TIMEINTERVAL'] > low) & (df['TIMEINTERVAL'] < high)
    fig = px.scatter(
        df[mask], x="DATE_TIME", y=["SBP","DBP"],
        hover_data=['TIMEINTERVAL'],facet_col='VISIT',
         facet_col_wrap=2,
         symbol='MODE')
    fig.update_xaxes(matches=None,
                     showticklabels=True)

    return fig


app.run_server(debug=True)

我得到了错误跟踪(最近一次调用):

"C:\Users\oezmenma\dashv1\dash2_choose_patient.py",文件

第63行,在update_bar_chart掩码=(df‘’TIMEINTERVAL‘>低)和(df’‘TIMEINTERVAL’<) TypeError:'int‘对象不可订阅

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 17:12:20

您可以查看下面的更正版本,我修复了多个问题。

代码语言:javascript
复制
app = Dash(__name__)


app.layout = html.Div([
    html.H4('Interactive Scatter Plot with ABPM dataset'),
    dcc.Graph(id="scatter-plot"),
    html.P("Filter by time interval:"),
    dcc.Dropdown(df.ID.unique(), id='pandas-dropdown-1'), # for choosing ID,
    dcc.RangeSlider(
        id='range-slider',
        min=0, max=600, step=10,
        marks={0: '0', 50: '50', 100: '100', 150: '150', 200: '200', 250: '250', 300: '300', 350: '350', 400: '400', 450: '450', 500: '500', 550: '550', 600: '600'},
        value=[0, 600]
    ),
    html.Div(id='dd-output-container')
])


@app.callback(
    Output("scatter-plot", "figure"),
    Input("pandas-dropdown-1", "value"),
    Input("range-slider", "value"),
    prevent_initial_call=True)

def update_bar_chart(value,slider_range):
    low, high = slider_range
    df1 = df.query("ID == @value & TIMEINTERVAL > @low & TIMEINTERVAL < @high").copy() 
    
    if df1.shape[0] != 0:
        fig = px.scatter(df1, x="DATE_TIME", y=["SBP","DBP"],
                         hover_data=['TIMEINTERVAL'],facet_col='VISIT',
                         facet_col_wrap=2,
                         symbol='MODE')
        
        fig.update_xaxes(matches= None, showticklabels=True)

        return fig
    else: 
        return dash.no_update


app.run_server(debug=True, use_reloader=False)

输出:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74362661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档