```python import numpy as np import matplotlib.patheffects as path_effects def add_median_labels(ax, fmt='.1f'): lines = ax.get_lines() boxes = [ c for c in ax.get_children() if type(c).__name__ == 'PathPatch' ] lines_per_box = int(len(lines) / len(boxes)) for median in lines[4:len(lines):lines_per_box]: x, y = (data.mean() for data in median.get_data()) # choose value depending on horizontal or vertical plot orientation value = x if ( median.get_xdata()[1] - median.get_xdata()[0] ) == 0 else y value = np.exp(value) - 1. text = ax.text( x, y, f'{value:{fmt}}', ha='center', va='center', fontweight='bold', color='white' ) # create median-colored border around white text for contrast text.set_path_effects([ path_effects.Stroke(linewidth=3, foreground=median.get_color()), path_effects.Normal(), ]) ```