Compare commits
3 Commits
483a831997
...
f0213824d9
| Author | SHA1 | Date | |
|---|---|---|---|
| f0213824d9 | |||
| 4ba0eb09e8 | |||
| 47d173443f |
@ -62,12 +62,12 @@ def variability_plot(
|
||||
df = polars.DataFrame(data_table)
|
||||
|
||||
# Drop nulls and nans so that the boxplots don't disappear
|
||||
df = polars.drop_nulls(subset=[data_col]).drop_nans(subset=[data_col])
|
||||
df = df.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')
|
||||
df = df.join(df_groups, on=groups, maintain_order='left', nulls_equal=True)
|
||||
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()
|
||||
fig = pyplot.figure(figsize=(16, 9))
|
||||
gs = gridspec.GridSpec(
|
||||
nrows = 1 + len(groups),
|
||||
ncols = 2,
|
||||
@ -117,14 +117,16 @@ 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.8))
|
||||
boxprops.setdefault('boxprops', dict(linewidth=0.5, color='black'))
|
||||
boxprops.setdefault('whiskerprops', dict(linewidth=0.5, color='black'))
|
||||
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)
|
||||
_boxplt = ax.boxplot(y_lists, positions=range(num_dsets), **boxprops)
|
||||
if meanprops:
|
||||
means = [yl.mean() for yl in y_lists]
|
||||
@ -140,6 +142,7 @@ 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)
|
||||
|
||||
|
||||
@ -211,8 +214,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')
|
||||
ax.grid(alpha=1, which='major')
|
||||
ax.grid(alpha=0.2, which='minor', zorder=0)
|
||||
ax.grid(alpha=1, which='major', zorder=0)
|
||||
ax.set_ylabel(data_col)
|
||||
ax.set_title(data_col)
|
||||
ax.yaxis.set_minor_locator(ticker.AutoMinorLocator())
|
||||
@ -284,7 +287,8 @@ 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
|
||||
text_value = wrap_fn(str(row[level]))
|
||||
rl = row[level]
|
||||
text_value = wrap_fn(rl) if isinstance(rl, str) else wrap_fn(str(rl).removesuffix('.0'))
|
||||
label_row.append((row['xmin'], row['xmax'], text_value))
|
||||
label_stack.append(label_row)
|
||||
return label_stack
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user