Когда я создаю параллельный координатный график в консоли i python, я могу фильтровать значения, щелкая и перетаскивая мышь над осью (на рисунке ниже, фильтр отображается фиолетовым цветом)
Однако, когда я помещаю этот же код в приложение da sh, я не могу использовать мышь и щелкать / перетаскивать для фильтрации некоторых значений.
Это нормальное поведение? Как я могу исправить эту проблему?
Код, используемый для создания параллельного графика в консоли 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