@@ -353,7 +353,6 @@ def plot_forest(
353
353
)
354
354
355
355
# add labels and shading first, so forest plot is rendered on top
356
- _ , lab_aes , lab_ignore = filter_aes (plot_collection , aes_map , "labels" , sample_dims )
357
356
cumulative_label = []
358
357
x = 0
359
358
for label in labellable_dims :
@@ -366,13 +365,6 @@ def plot_forest(
366
365
shade_extend = 0.5 if add_factor == 0 else 0.3
367
366
if label not in labels :
368
367
continue
369
- lab_kwargs = plot_kwargs .get ("labels" , {}).copy ()
370
- if "color" not in lab_aes :
371
- lab_kwargs .setdefault ("color" , "black" )
372
- if x == 0 :
373
- lab_kwargs .setdefault ("horizontal_align" , "left" )
374
- if x == len (labels ) - 1 :
375
- lab_kwargs .setdefault ("horizontal_align" , "right" )
376
368
if label == "__variable__" :
377
369
y_max = y_ds .max () + shade_extend
378
370
y_min = y_ds .min () - shade_extend
@@ -413,6 +405,23 @@ def plot_forest(
413
405
ignore_aes = shade_ignore ,
414
406
** shade_kwargs ,
415
407
)
408
+ _ , lab_aes , lab_ignore = filter_aes (plot_collection , aes_map , "labels" , sample_dims )
409
+ extra_ignore_aes = []
410
+ for aes_key in lab_aes :
411
+ if aes_key == "overlay" :
412
+ continue
413
+ aes_ds = plot_collection .get_aes_as_dataset (aes_key )
414
+ if set (aes_ds .dims ).difference (cumulative_label ):
415
+ extra_ignore_aes .append (aes_key )
416
+ lab_aes = set (lab_aes ).difference (extra_ignore_aes )
417
+ lab_ignore = set (lab_ignore ).union (extra_ignore_aes )
418
+ lab_kwargs = plot_kwargs .get ("labels" , {}).copy ()
419
+ if "color" not in lab_aes :
420
+ lab_kwargs .setdefault ("color" , "black" )
421
+ if x == 0 :
422
+ lab_kwargs .setdefault ("horizontal_align" , "left" )
423
+ if x == len (labels ) - 1 :
424
+ lab_kwargs .setdefault ("horizontal_align" , "right" )
416
425
plot_collection .map (
417
426
annotate_label ,
418
427
f"{ label .strip ('_' )} _label" ,
0 commit comments