【问题标题】:Is it possible to filter the dash datatable with the first row always unfiltered是否可以过滤第一行始终未过滤的破折号数据表
【发布时间】:2022-07-02 17:07:33
【问题描述】:

我需要在 Dash 中绘制 3D 散点图和数据表。

我的目的是能够使用数据表来过滤散点图。我的数据的第一行是目标。过滤器是否可以始终保留第一行?

例如,我尝试使用 solar.csv 构建模型:

from dash import Dash, dash_table
import pandas as pd
from dash.dependencies import Input, Output
import plotly.express as px
from dash import Dash, dash_table, html, dcc

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/solar.csv')

app = Dash(__name__)

app.layout = dash_table.DataTable(
    df.to_dict('records'), 
    [{"name": i, "id": i} for i in df.columns],
    filter_action='native'
)

app.layout = html.Div([
    dash_table.DataTable(
        id='datatable-interactivity',
        data = df.to_dict('records'), 
        columns = [{"name": i, "id": i} for i in df.columns],
        filter_action='native'
    ),
    html.Div(id='scatter-container')

])

@app.callback(
    Output(component_id='scatter-container', component_property='children'),
    Input(component_id='datatable-interactivity', component_property="derived_virtual_data")
)
def update_scatter(all_rows_data):
    dff = pd.DataFrame(all_rows_data)
    fig = px.scatter(dff, x='Number of Solar Plants', y = 'Generation (GWh)')
    return dcc.Graph(figure=fig)

if __name__ == '__main__':
    app.run_server(debug=True)

假设第一行(加利福尼亚州)是我的目标,当我在过滤器字段中输入“Arizona”并因此在散点图中同时显示加利福尼亚州和亚利桑那州时,是否可以同时显示加利福尼亚州和亚利桑那州?

【问题讨论】:

    标签: python plotly plotly-dash


    【解决方案1】:

    可能有很多方法,但始终显示固定行的一种方法是在过滤数据框创建的图形上创建一个附加图形。 go 的图形对象用于添加标记。而且,我将悬停数据与原始图表相匹配。

    def update_scatter(all_rows_data):
        dff = df if all_rows_data is None else pd.DataFrame(all_rows_data)
        fig = px.scatter(dff, x='Number of Solar Plants', y='Generation (GWh)')
        fig.add_trace(go.Scatter(x=[df.loc[0, 'Number of Solar Plants']],
                                 y=[df.loc[0,'Generation (GWh)']],
                                 mode='markers',
                                 marker=dict(color='#636efa'),
                                 showlegend=False,
                                 hovertemplate='Number of Solar Plants=%{x}<br>Generation (GWh)%{y}'
                                ))
        return dcc.Graph(figure=fig)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 2014-09-16
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多