@@ -182,3 +182,43 @@ def test_px_templates():
182
182
assert fig .layout .xaxis3 .showgrid is None
183
183
assert fig .layout .yaxis2 .showgrid
184
184
assert fig .layout .yaxis3 .showgrid
185
+
186
+
187
+ def test_orthogonal_orderings ():
188
+ from itertools import permutations
189
+
190
+ df = px .data .tips ()
191
+
192
+ symbol_sequence = ["circle" , "diamond" , "square" , "cross" ]
193
+ color_sequence = ["red" , "blue" ]
194
+
195
+ for days in permutations (df ["day" ].unique ()):
196
+ 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 ]
0 commit comments