Невозможно отфильтровать данные в параллельном координатном графике с тире - PullRequest
0 голосов
/ 06 января 2020

Когда я создаю параллельный координатный график в консоли i python, я могу фильтровать значения, щелкая и перетаскивая мышь над осью (на рисунке ниже, фильтр отображается фиолетовым цветом)

filtering in the notebook

Однако, когда я помещаю этот же код в приложение da sh, я не могу использовать мышь и щелкать / перетаскивать для фильтрации некоторых значений.

Это нормальное поведение? Как я могу исправить эту проблему?

no filtering in dash

Код, используемый для создания параллельного графика в консоли i python

#%%
import pandas as pd
import plotly.graph_objects as go

def import_data(file):
     df = pd.read_excel(file)
     return df


def draw_parallel_plot(df, axes):
     dimensions = []
     for axe in axes:
          dimensions.append(
               dict(range = [df[axe].min(),df[axe].max()],
                    tickvals = [],
                    label = axe, values = df[axe]),
          )
     fig = go.Figure(data=
     go.Parcoords(
          line = dict(color = df['param1'],
                    colorscale = 'earth',
                    ),
          dimensions = dimensions
          )
     )
     return fig



#%%

df = import_data(".\\data\\example_donnees.xlsx")
#%%
fig = draw_parallel_plot(df, ["param1", "param2", "param3", "param4","param5" , "param6"])
fig.show()

# %%
fig = draw_parallel_category(df, [["param1", "param2", "param3", "param4","param5" , "param6", "serial"]])
fig.show()

Код, используемый для da sh application

# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html
import dash_table

import pandas as pd
import plotly.graph_objects as go

def import_data(file):
     df = pd.read_excel(file)
     return df


def draw_parallel_plot(df, axes):
     dimensions = []
     for axe in axes:
          dimensions.append(
               dict(range = [df[axe].min(),df[axe].max()],
                    tickvals = [],
                    label = axe, values = df[axe]),
          )
     fig = go.Figure(data=
     go.Parcoords(
          line = dict(color = df['param1'],
                    colorscale = 'earth',
                    ),
          dimensions = dimensions
          )
     )
     return fig


default_values = ["param1", "param2", "param3", "param4","param5" , "param6"]
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
df = import_data(".\\data\\example_donnees.xlsx")

app.layout = html.Div(children=[
        html.H1(children='Filtering problem in parallel coordinates'),
        dcc.Dropdown(
            id='demo-dropdown',
            options=[
                        {'label': x, 'value': x} for x in df.columns 

                    ],
                    multi=True,
                    value=default_values
        ),
        dcc.Graph(
            id='plot-graph',
            figure=draw_parallel_plot(df, default_values)
        ), 
        html.Div(id="table")
    ])


@app.callback(
    dash.dependencies.Output('plot-graph', 'figure'),
    [dash.dependencies.Input('demo-dropdown', 'value')])
def update_figure(value):
    return draw_parallel_plot(df, value)



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

значения, содержащиеся в файле excel (для воспроизведения ошибки)

    serial  param1  param2  param3  param4  param5  param6
0   SER_001 0   12  18  0   0   3
1   SER_002 0   11  5   1   1   4
2   SER_003 1   15  3   1   1   4
3   SER_004 2   19  13  1   1   1
4   SER_005 6   12  8   0   0   4
5   SER_006 0   6   13  0   0   2
6   SER_007 3   17  11  1   0   0
7   SER_008 2   11  3   1   1   2
8   SER_009 5   24  2   0   0   1
9   SER_010 2   13  10  0   0   1
10  SER_011 3   18  20  0   0   3
11  SER_012 6   6   20  0   1   0
12  SER_013 6   8   16  0   1   4
13  SER_014 2   12  12  1   0   3
14  SER_015 0   17  10  0   0   2
15  SER_016 6   7   16  1   0   2
16  SER_017 4   14  20  0   0   3
17  SER_018 4   24  12  1   0   2
18  SER_019 5   19  5   1   0   0
19  SER_020 5   17  16  1   1   2
20  SER_021 5   10  5   1   1   4
21  SER_022 3   6   6   0   0   2
22  SER_023 6   11  1   0   0   1
23  SER_024 4   10  6   1   1   0
24  SER_025 2   14  20  0   0   1
25  SER_026 1   16  8   1   1   3
26  SER_027 2   14  9   0   0   3
27  SER_028 1   19  16  0   1   4
28  SER_029 1   18  8   0   1   0
29  SER_030 6   9   2   0   0   1
30  SER_031 2   22  3   1   0   4
31  SER_032 3   14  2   0   1   1
32  SER_033 0   17  13  1   1   2
33  SER_034 6   7   5   0   0   1
34  SER_035 5   20  13  1   1   3
35  SER_036 2   6   20  0   1   2
36  SER_037 1   6   20  0   1   0
37  SER_038 3   9   2   1   1   1
38  SER_039 0   6   6   1   0   2
39  SER_040 0   19  11  1   0   3
40  SER_041 5   6   10  1   0   1
41  SER_042 3   22  9   0   0   0
42  SER_043 5   12  18  0   0   4
43  SER_044 2   14  9   1   1   4
44  SER_045 3   7   9   0   1   2
45  SER_046 4   23  14  1   1   0
46  SER_047 1   16  2   0   0   3
47  SER_048 5   14  5   1   0   1
48  SER_049 3   20  7   0   1   0
49  SER_050 4   20  8   1   1   2
50  SER_051 5   22  14  0   1   3
51  SER_052 5   19  14  0   1   1
52  SER_053 3   24  15  0   0   2
53  SER_054 3   19  11  0   1   1
54  SER_055 6   16  17  1   0   2
55  SER_056 3   22  7   1   0   4
56  SER_057 6   15  4   0   1   2
57  SER_058 1   6   3   1   1   3
58  SER_059 6   21  14  0   0   1
59  SER_060 0   19  12  0   0   0
60  SER_061 0   11  7   1   0   3
61  SER_062 0   8   13  0   0   0
62  SER_063 1   5   1   0   1   4
63  SER_064 5   8   3   0   1   3
64  SER_065 0   9   17  0   1   2
65  SER_066 4   14  18  0   1   1
66  SER_067 1   21  7   1   0   2
67  SER_068 0   6   17  0   1   4
68  SER_069 3   21  19  1   1   4
69  SER_070 3   14  5   1   1   0
70  SER_071 4   15  15  0   0   4
71  SER_072 4   9   11  1   0   0
72  SER_073 3   19  15  0   0   0
73  SER_074 0   12  13  1   0   4
74  SER_075 1   11  6   0   1   0
75  SER_076 2   6   3   1   1   4
76  SER_077 0   15  5   0   1   2
77  SER_078 3   19  2   1   1   2
78  SER_079 1   12  18  1   0   2
79  SER_080 4   23  3   1   1   3
80  SER_081 4   7   7   0   1   4
81  SER_082 3   8   18  0   1   2
82  SER_083 1   17  3   1   0   0
83  SER_084 5   24  10  0   0   3
84  SER_085 1   7   7   0   0   2
85  SER_086 2   23  12  1   1   4
86  SER_087 2   19  3   1   0   0
87  SER_088 0   20  11  1   0   4
88  SER_089 3   16  13  0   0   1
89  SER_090 6   22  14  0   0   0
90  SER_091 2   23  3   0   1   2
91  SER_092 0   10  13  1   1   2
92  SER_093 2   17  3   0   1   3
93  SER_094 1   23  1   1   1   1
94  SER_095 4   7   5   0   1   0
95  SER_096 5   5   4   1   0   1
96  SER_097 4   22  6   1   0   3
97  SER_098 4   8   12  0   1   2
98  SER_099 3   10  13  1   0   1
99  SER_100 1   19  17  1   1   0
100 SER_101 6   18  5   0   0   3
101 SER_102 6   5   9   1   1   1
102 SER_103 3   5   8   1   1   0
103 SER_104 0   7   1   1   1   2
104 SER_105 6   23  10  1   0   2
105 SER_106 6   10  20  0   1   0
106 SER_107 2   21  18  0   0   2
107 SER_108 6   20  20  0   0   3
108 SER_109 1   13  5   0   1   3
109 SER_110 1   20  7   1   0   3
110 SER_111 6   12  11  0   1   0
111 SER_112 0   6   15  1   0   2
112 SER_113 3   8   17  1   0   0
...