@@ -192,33 +192,44 @@ def test_orthogonal_orderings():
192192 symbol_sequence = ["circle" , "diamond" , "square" , "cross" ]
193193 color_sequence = ["red" , "blue" ]
194194
195+ def assert_orderings (days_order , days_check , times_order , times_check ):
196+ fig = px .scatter (
197+ df ,
198+ x = "total_bill" ,
199+ y = "tip" ,
200+ facet_row = "time" ,
201+ facet_col = "day" ,
202+ color = "time" ,
203+ symbol = "day" ,
204+ symbol_sequence = symbol_sequence ,
205+ color_discrete_sequence = color_sequence ,
206+ category_orders = dict (day = days_order , time = times_order ),
207+ )
208+
209+ for col in range (len (days_check )):
210+ for trace in fig .select_traces (col = col + 1 ):
211+ assert days_check [col ] in trace .hovertemplate
212+
213+ for row in range (len (times_check )):
214+ for trace in fig .select_traces (row = 2 - row ):
215+ assert times_check [row ] in trace .hovertemplate
216+
217+ for trace in fig .data :
218+ for i , day in enumerate (days_check ):
219+ if day in trace .name :
220+ assert trace .marker .symbol == symbol_sequence [i ]
221+ for i , time in enumerate (times_check ):
222+ if time in trace .name :
223+ assert trace .marker .color == color_sequence [i ]
224+
225+ assert_orderings (
226+ ["x" , "Sun" , "Sat" , "y" , "Fri" , "z" ], # add extra noise, missing Thur
227+ ["Sun" , "Sat" , "Fri" , "Thur" ], # Thur is at the back
228+ ["a" , "Lunch" , "b" ], # add extra noise, missing Dinner
229+ ["Lunch" , "Dinner" ], # Dinner is at the back
230+ )
231+
195232 for days in permutations (df ["day" ].unique ()):
196233 for times in permutations (df ["time" ].unique ()):
197- fig = px .scatter (
198- df ,
199- x = "total_bill" ,
200- y = "tip" ,
201- facet_row = "time" ,
202- facet_col = "day" ,
203- color = "time" ,
204- symbol = "day" ,
205- symbol_sequence = symbol_sequence ,
206- color_discrete_sequence = color_sequence ,
207- category_orders = dict (day = days , time = times ),
208- )
209-
210- for col in range (len (days )):
211- for trace in fig .select_traces (col = col + 1 ):
212- assert days [col ] in trace .hovertemplate
213-
214- for row in range (len (times )):
215- for trace in fig .select_traces (row = 2 - row ):
216- assert times [row ] in trace .hovertemplate
217-
218- for trace in fig .data :
219- for i , day in enumerate (days ):
220- if day in trace .name :
221- assert trace .marker .symbol == symbol_sequence [i ]
222- for i , time in enumerate (times ):
223- if time in trace .name :
224- assert trace .marker .color == color_sequence [i ]
234+ assert_orderings (days , days , times , times )
235+
0 commit comments