@@ -177,7 +177,7 @@ def _add_shapes_to_fig(fig, annot_rect_color, flipped_rows=False,
177
177
def _facet_grid_color_categorical (df , x , y , facet_row , facet_col , color_name ,
178
178
colormap , num_of_rows ,
179
179
num_of_cols , facet_row_labels ,
180
- facet_col_labels , temp_trace ,
180
+ facet_col_labels , trace_type ,
181
181
flipped_rows , flipped_cols , show_boxes ,
182
182
marker_color , kwargs_trace , kwargs_marker ):
183
183
@@ -190,18 +190,22 @@ def _facet_grid_color_categorical(df, x, y, facet_row, facet_col, color_name,
190
190
if not facet_row and not facet_col :
191
191
color_groups = list (df .groupby (color_name ))
192
192
for group in color_groups :
193
- trace = graph_objs . Scatter (
193
+ trace = dict (
194
194
x = group [1 ][x ],
195
195
y = group [1 ][y ],
196
- mode = 'markers' ,
197
- type = temp_trace ,
196
+ type = trace_type ,
198
197
name = group [0 ],
199
198
marker = dict (
200
199
color = colormap [group [0 ]],
201
- ** kwargs_marker
202
200
),
203
201
** kwargs_trace
204
202
)
203
+ if trace_type in ['scatter' , 'scattergl' ]:
204
+ trace ['mode' ] = 'markers'
205
+ trace ['marker' ] = dict (
206
+ color = colormap [group [0 ]], ** kwargs_marker
207
+ )
208
+
205
209
fig .append_trace (trace , 1 , 1 )
206
210
207
211
elif (facet_row and not facet_col ) or (not facet_row and facet_col ):
@@ -211,18 +215,22 @@ def _facet_grid_color_categorical(df, x, y, facet_row, facet_col, color_name,
211
215
for j , group in enumerate (groups_by_facet ):
212
216
for color_val in df [color_name ].unique ():
213
217
data_by_color = group [1 ][group [1 ][color_name ] == color_val ]
214
- trace = graph_objs . Scatter (
218
+ trace = dict (
215
219
x = data_by_color [x ],
216
220
y = data_by_color [y ],
217
- mode = 'markers' ,
218
- type = temp_trace ,
221
+ type = trace_type ,
219
222
name = color_val ,
220
223
marker = dict (
221
224
color = colormap [color_val ],
222
- ** kwargs_marker
223
225
),
224
226
** kwargs_trace
225
227
)
228
+ if trace_type in ['scatter' , 'scattergl' ]:
229
+ trace ['mode' ] = 'markers'
230
+ trace ['marker' ] = dict (
231
+ color = colormap [group [0 ]], ** kwargs_marker
232
+ )
233
+
226
234
fig .append_trace (trace ,
227
235
j + 1 if facet_row else 1 ,
228
236
1 if facet_row else j + 1 )
@@ -262,32 +270,41 @@ def _facet_grid_color_categorical(df, x, y, facet_row, facet_col, color_name,
262
270
if group .values .tolist () != [[None , None , None ]]:
263
271
group_filtered = group [group [color_name ] == color_val ]
264
272
265
- trace = graph_objs . Scatter (
273
+ trace = dict (
266
274
x = group_filtered [x ],
267
275
y = group_filtered [y ],
268
- mode = 'markers' ,
269
- type = temp_trace ,
276
+ type = trace_type ,
270
277
name = color_val ,
271
278
marker = dict (
272
279
color = colormap [color_val ],
273
- ** kwargs_marker
274
280
),
275
281
** kwargs_trace
276
282
)
283
+ if trace_type in ['scatter' , 'scattergl' ]:
284
+ trace ['mode' ] = 'markers'
285
+ trace ['marker' ] = dict (
286
+ color = colormap [color_val ], ** kwargs_marker
287
+ )
288
+
277
289
else :
278
- trace = graph_objs . Scatter (
290
+ trace = dict (
279
291
x = group [x ],
280
292
y = group [y ],
281
- mode = 'markers' ,
282
- type = temp_trace ,
293
+ type = trace_type ,
283
294
name = color_val ,
284
295
marker = dict (
285
296
color = colormap [color_val ],
286
- ** kwargs_marker
287
297
),
288
298
showlegend = False ,
289
299
** kwargs_trace
290
300
)
301
+ if trace_type in ['scatter' , 'scattergl' ]:
302
+ trace ['mode' ] = 'markers'
303
+ trace ['marker' ] = dict (
304
+ color = colormap [color_val ], ** kwargs_marker
305
+ )
306
+
307
+
291
308
fig .append_trace (trace , row_count + 1 , col_count + 1 )
292
309
if row_count == 0 :
293
310
label = _return_label (col_values [col_count ],
@@ -312,7 +329,7 @@ def _facet_grid_color_categorical(df, x, y, facet_row, facet_col, color_name,
312
329
def _facet_grid_color_numerical (df , x , y , facet_row , facet_col , color_name ,
313
330
colormap , num_of_rows ,
314
331
num_of_cols , facet_row_labels ,
315
- facet_col_labels , temp_trace ,
332
+ facet_col_labels , trace_type ,
316
333
flipped_rows , flipped_cols , show_boxes ,
317
334
marker_color , kwargs_trace , kwargs_marker ):
318
335
@@ -323,40 +340,48 @@ def _facet_grid_color_numerical(df, x, y, facet_row, facet_col, color_name,
323
340
324
341
annotations = []
325
342
if not facet_row and not facet_col :
326
- trace = graph_objs . Scatter (
343
+ trace = dict (
327
344
x = df [x ],
328
345
y = df [y ],
329
- mode = 'markers' ,
330
- type = temp_trace ,
346
+ type = trace_type ,
331
347
marker = dict (
332
348
color = df [color_name ],
333
349
colorscale = colormap ,
334
350
showscale = True ,
335
- ** kwargs_marker
336
351
),
337
352
** kwargs_trace
338
353
)
354
+ if trace_type in ['scatter' , 'scattergl' ]:
355
+ trace ['mode' ] = 'markers'
356
+ trace ['marker' ] = dict (
357
+ color = df [color_name ], ** kwargs_marker
358
+ )
359
+
339
360
fig .append_trace (trace , 1 , 1 )
340
361
341
362
if (facet_row and not facet_col ) or (not facet_row and facet_col ):
342
363
groups_by_facet = list (
343
364
df .groupby (facet_row if facet_row else facet_col )
344
365
)
345
366
for j , group in enumerate (groups_by_facet ):
346
- trace = graph_objs . Scatter (
367
+ trace = dict (
347
368
x = group [1 ][x ],
348
369
y = group [1 ][y ],
349
- mode = 'markers' ,
350
- type = temp_trace ,
370
+ type = trace_type ,
351
371
marker = dict (
352
372
color = df [color_name ],
353
373
colorscale = colormap ,
354
374
showscale = True ,
355
375
colorbar = dict (x = 1.15 ),
356
- ** kwargs_marker
357
376
),
358
377
** kwargs_trace
359
378
)
379
+ if trace_type in ['scatter' , 'scattergl' ]:
380
+ trace ['mode' ] = 'markers'
381
+ trace ['marker' ] = dict (
382
+ color = df [color_name ], ** kwargs_marker
383
+ )
384
+
360
385
fig .append_trace (
361
386
trace ,
362
387
j + 1 if facet_row else 1 ,
@@ -393,29 +418,33 @@ def _facet_grid_color_numerical(df, x, y, facet_row, facet_col, color_name,
393
418
columns = [x , y , color_name ])
394
419
395
420
if group .values .tolist () != [[None , None , None ]]:
396
- trace = graph_objs . Scatter (
421
+ trace = dict (
397
422
x = group [x ],
398
423
y = group [y ],
399
- mode = 'markers' ,
400
- type = temp_trace ,
424
+ type = trace_type ,
401
425
marker = dict (
402
426
color = df [color_name ],
403
427
colorscale = colormap ,
404
428
showscale = (row_count == 0 ),
405
429
colorbar = dict (x = 1.15 ),
406
- ** kwargs_marker
407
430
),
408
431
** kwargs_trace
409
432
)
433
+ if trace_type in ['scatter' , 'scattergl' ]:
434
+ trace ['mode' ] = 'markers'
435
+ trace ['marker' ] = dict (
436
+ color = df [color_name ], ** kwargs_marker
437
+ )
438
+
410
439
else :
411
- trace = graph_objs . Scatter (
440
+ trace = dict (
412
441
x = group [x ],
413
442
y = group [y ],
414
- mode = 'markers' ,
415
- type = temp_trace ,
443
+ type = trace_type ,
416
444
showlegend = False ,
417
445
** kwargs
418
446
)
447
+
419
448
fig .append_trace (trace , row_count + 1 , col_count + 1 )
420
449
if row_count == 0 :
421
450
label = _return_label (col_values [col_count ],
@@ -440,7 +469,7 @@ def _facet_grid_color_numerical(df, x, y, facet_row, facet_col, color_name,
440
469
441
470
def _facet_grid (df , x , y , facet_row , facet_col , num_of_rows ,
442
471
num_of_cols , facet_row_labels , facet_col_labels ,
443
- temp_trace , flipped_rows , flipped_cols , show_boxes ,
472
+ trace_type , flipped_rows , flipped_cols , show_boxes ,
444
473
marker_color , kwargs_trace , kwargs_marker ):
445
474
446
475
fig = make_subplots (rows = num_of_rows , cols = num_of_cols ,
@@ -449,35 +478,39 @@ def _facet_grid(df, x, y, facet_row, facet_col, num_of_rows,
449
478
vertical_spacing = SUBPLOT_SPACING , print_grid = False )
450
479
annotations = []
451
480
if not facet_row and not facet_col :
452
- trace = graph_objs . Scatter (
481
+ trace = dict (
453
482
x = df [x ],
454
483
y = df [y ],
455
- mode = 'markers' ,
456
- type = temp_trace ,
484
+ type = trace_type ,
457
485
marker = dict (
458
486
color = marker_color ,
459
- ** kwargs_marker
460
487
),
461
488
** kwargs_trace
462
489
)
490
+ if trace_type in ['scatter' , 'scattergl' ]:
491
+ trace ['mode' ] = 'markers'
492
+ trace ['marker' ] = dict (color = marker_color , ** kwargs_marker )
493
+
463
494
fig .append_trace (trace , 1 , 1 )
464
495
465
496
elif (facet_row and not facet_col ) or (not facet_row and facet_col ):
466
497
groups_by_facet = list (
467
498
df .groupby (facet_row if facet_row else facet_col )
468
499
)
469
500
for j , group in enumerate (groups_by_facet ):
470
- trace = graph_objs . Scatter (
501
+ trace = dict (
471
502
x = group [1 ][x ],
472
503
y = group [1 ][y ],
473
- mode = 'markers' ,
474
- type = temp_trace ,
504
+ type = trace_type ,
475
505
marker = dict (
476
506
color = marker_color ,
477
- ** kwargs_marker
478
507
),
479
508
** kwargs_trace
480
509
)
510
+ if trace_type in ['scatter' , 'scattergl' ]:
511
+ trace ['mode' ] = 'markers'
512
+ trace ['marker' ] = dict (color = marker_color , ** kwargs_marker )
513
+
481
514
fig .append_trace (trace ,
482
515
j + 1 if facet_row else 1 ,
483
516
1 if facet_row else j + 1 )
@@ -511,17 +544,21 @@ def _facet_grid(df, x, y, facet_row, facet_col, num_of_rows,
511
544
group = tuple_to_facet_group [(x_val , y_val )]
512
545
except KeyError :
513
546
group = pd .DataFrame ([[None , None ]], columns = [x , y ])
514
- trace = graph_objs . Scatter (
547
+ trace = dict (
515
548
x = group [x ],
516
549
y = group [y ],
517
- mode = 'markers' ,
518
- type = temp_trace ,
550
+ type = trace_type ,
519
551
marker = dict (
520
552
color = marker_color ,
521
- ** kwargs_marker
522
553
),
523
554
** kwargs_trace
524
555
)
556
+ if trace_type in ['scatter' , 'scattergl' ]:
557
+ trace ['mode' ] = 'markers'
558
+ trace ['marker' ] = dict (
559
+ color = marker_color , ** kwargs_marker
560
+ )
561
+
525
562
fig .append_trace (trace , row_count + 1 , col_count + 1 )
526
563
if row_count == 0 :
527
564
label = _return_label (col_values [col_count ],
@@ -720,6 +757,9 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
720
757
"x, y, facet_row, facet_col and color_name must be keys "
721
758
"in your dataframe."
722
759
)
760
+ # autoscale histogram bars
761
+ if trace_type == 'histogram' :
762
+ scales = 'free'
723
763
724
764
# validate scales
725
765
if scales not in ['fixed' , 'free_x' , 'free_y' , 'free' ]:
@@ -732,8 +772,6 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
732
772
"'trace_type' must be in {}" .format (VALID_TRACE_TYPES )
733
773
)
734
774
735
- temp_trace = 'scatter' if (trace_type == 'histogram' ) else trace_type
736
-
737
775
# seperate kwargs for marker and else
738
776
if 'marker' in kwargs :
739
777
kwargs_marker = kwargs ['marker' ]
@@ -811,7 +849,7 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
811
849
fig = _facet_grid_color_categorical (
812
850
df , x , y , facet_row , facet_col , color_name , colormap ,
813
851
num_of_rows , num_of_cols , facet_row_labels , facet_col_labels ,
814
- temp_trace , flipped_rows , flipped_cols , show_boxes ,
852
+ trace_type , flipped_rows , flipped_cols , show_boxes ,
815
853
marker_color , kwargs_trace , kwargs_marker
816
854
)
817
855
@@ -830,7 +868,7 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
830
868
fig = _facet_grid_color_categorical (
831
869
df , x , y , facet_row , facet_col , color_name , colormap ,
832
870
num_of_rows , num_of_cols , facet_row_labels ,
833
- facet_col_labels , temp_trace , flipped_rows ,
871
+ facet_col_labels , trace_type , flipped_rows ,
834
872
flipped_cols , show_boxes , marker_color , kwargs_trace ,
835
873
kwargs_marker
836
874
)
@@ -842,7 +880,7 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
842
880
fig = _facet_grid_color_numerical (
843
881
df , x , y , facet_row , facet_col , color_name ,
844
882
colorscale_list , num_of_rows , num_of_cols ,
845
- facet_row_labels , facet_col_labels , temp_trace ,
883
+ facet_row_labels , facet_col_labels , trace_type ,
846
884
flipped_rows , flipped_cols , show_boxes , marker_color ,
847
885
kwargs_trace , kwargs_marker
848
886
)
@@ -858,7 +896,7 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
858
896
fig = _facet_grid_color_numerical (
859
897
df , x , y , facet_row , facet_col , color_name ,
860
898
colorscale_list , num_of_rows , num_of_cols ,
861
- facet_row_labels , facet_col_labels , temp_trace ,
899
+ facet_row_labels , facet_col_labels , trace_type ,
862
900
flipped_rows , flipped_cols , show_boxes , marker_color ,
863
901
kwargs_trace , kwargs_marker
864
902
)
@@ -867,15 +905,15 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
867
905
fig = _facet_grid_color_numerical (
868
906
df , x , y , facet_row , facet_col , color_name ,
869
907
colorscale_list , num_of_rows , num_of_cols ,
870
- facet_row_labels , facet_col_labels , temp_trace ,
908
+ facet_row_labels , facet_col_labels , trace_type ,
871
909
flipped_rows , flipped_cols , show_boxes , marker_color ,
872
910
kwargs_trace , kwargs_marker
873
911
)
874
912
875
913
else :
876
914
fig = _facet_grid (
877
915
df , x , y , facet_row , facet_col , num_of_rows , num_of_cols ,
878
- facet_row_labels , facet_col_labels , temp_trace , flipped_rows ,
916
+ facet_row_labels , facet_col_labels , trace_type , flipped_rows ,
879
917
flipped_cols , show_boxes , marker_color , kwargs_trace ,
880
918
kwargs_marker
881
919
)
@@ -1015,10 +1053,4 @@ def create_facet_grid(df, x, y, facet_row=None, facet_col=None,
1015
1053
if '{}axis' .format (x_y ) in key and range_are_numbers :
1016
1054
fig ['layout' ][key ]['range' ] = [min_range , max_range ]
1017
1055
1018
- if trace_type == 'histogram' :
1019
- for trace in fig ['data' ]:
1020
- trace ['type' ] = trace_type
1021
- del trace ['marker' ]['size' ]
1022
- del trace ['mode' ]
1023
-
1024
1056
return fig
0 commit comments