diff --git a/miscplot/variability.py b/miscplot/variability.py index 364b196..aff667d 100644 --- a/miscplot/variability.py +++ b/miscplot/variability.py @@ -62,12 +62,12 @@ def variability_plot( df = polars.DataFrame(data_table) # Drop nulls and nans so that the boxplots don't disappear - df = df.drop_nulls(subset=[data_col]).drop_nans(subset=[data_col]) + df = polars.drop_nulls(subset=[data_col]).drop_nans(subset=[data_col]) # Assign category indicies (x_pos) df = df.sort(groups) df_groups = df.select(groups).unique(maintain_order=True).with_row_index(name='x_pos') - df = df.join(df_groups, on=groups, maintain_order='left', nulls_equal=True) + df = df.join(df_groups, on=groups, maintain_order='left') max_group_length = df.group_by(groups).len().select('len').max()[0, 0] # How many points in the largest x_pos # Add jitter to the scatterplots-plots @@ -90,7 +90,7 @@ def variability_plot( y_ratios = [mainplot_ratios[1]] + get_label_y_ratios(groups, vert_groups, size_lists) # Build the figure and all axes - fig = pyplot.figure(figsize=(16, 9)) + fig = pyplot.figure() gs = gridspec.GridSpec( nrows = 1 + len(groups), ncols = 2, @@ -117,16 +117,14 @@ def variability_plot( dotprops = {} dotprops.setdefault('alpha', 0.7) dotprops.setdefault('color', 'black') - dotprops.setdefault('zorder', 5) _dotplt = ax.scatter(x_data, y_data, s=numpy.ones_like(y_data), **dotprops) if boxprops: if not isinstance(boxprops, dict): boxprops = {} boxprops.setdefault('showfliers', False) - boxprops.setdefault('medianprops', dict(linewidth=3, color='darkred', alpha=0.5, zorder=2)) - boxprops.setdefault('boxprops', dict(linewidth=0.5, color='black', zorder=3)) - boxprops.setdefault('whiskerprops', dict(linewidth=0.5, color='black', zorder=3)) - boxprops.setdefault('zorder', 3) + boxprops.setdefault('medianprops', dict(linewidth=3, color='darkred', alpha=0.8)) + boxprops.setdefault('boxprops', dict(linewidth=0.5, color='black')) + boxprops.setdefault('whiskerprops', dict(linewidth=0.5, color='black')) _boxplt = ax.boxplot(y_lists, positions=range(num_dsets), **boxprops) if meanprops: means = [yl.mean() for yl in y_lists] @@ -142,7 +140,6 @@ def variability_plot( meanprops.setdefault('color', 'blue') meanprops.setdefault('alpha', 0.8) meanprops.setdefault('linewidth', 0.5) - meanprops.setdefault('zorder', 3) _meanplt = ax.plot(xy[:, 0], xy[:, 1], **meanprops) @@ -214,8 +211,8 @@ def variability_plot( ax.set_xticklabels([], minor=False) ax.set_xticklabels([], minor=True) ax.tick_params('x', which='both', bottom=False) - ax.grid(alpha=0.2, which='minor', zorder=0) - ax.grid(alpha=1, which='major', zorder=0) + ax.grid(alpha=0.2, which='minor') + ax.grid(alpha=1, which='major') ax.set_ylabel(data_col) ax.set_title(data_col) ax.yaxis.set_minor_locator(ticker.AutoMinorLocator()) @@ -287,8 +284,7 @@ def get_label_stack(df_groups: polars.DataFrame, groups: Sequence[str], wrap_fn: label_row = [] for row in spans.to_dicts(): # df row is plot column - rl = row[level] - text_value = wrap_fn(rl) if isinstance(rl, str) else wrap_fn(str(rl).removesuffix('.0')) + text_value = wrap_fn(str(row[level])) label_row.append((row['xmin'], row['xmax'], text_value)) label_stack.append(label_row) return label_stack