Skip to content

Commit 14cd6cf

Browse files
committed
Made variable names more meaningful
1 parent becbfa4 commit 14cd6cf

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

examples/statistics/customized_violin_demo.py

+19-24
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020

2121
def adjacent_values(vals):
2222
q1, q3 = np.percentile(vals, [25, 75])
23-
# inter-quartile range iqr
24-
iqr = q3 - q1
25-
# upper adjacent values
26-
uav = q3 + iqr * 1.5
27-
uav = np.clip(uav, q3, vals[-1])
28-
# lower adjacent values
29-
lav = q1 - iqr * 1.5
30-
lav = np.clip(lav, vals[0], q1)
31-
return [lav, uav]
23+
inter_quartile_range = q3 - q1
24+
25+
upper_adjacent_value = q3 + inter_quartile_range * 1.5
26+
upper_adjacent_value = np.clip(upper_adjacent_value, q3, vals[-1])
27+
28+
lower_adjacent_value = q1 - inter_quartile_range * 1.5
29+
lower_adjacent_value = np.clip(lower_adjacent_value, vals[0], q1)
30+
return [lower_adjacent_value, upper_adjacent_value]
3231

3332

3433
def set_axis_style(ax, labels):
@@ -42,19 +41,19 @@ def set_axis_style(ax, labels):
4241

4342
# create test data
4443
np.random.seed(123)
45-
dat = [sorted(np.random.normal(0, std, 100)) for std in range(1, 5)]
44+
data = [sorted(np.random.normal(0, std, 100)) for std in range(1, 5)]
4645

4746
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(9, 4), sharey=True)
4847

4948
# plot the default violin
5049
ax1.set_title('Default violin plot')
5150
ax1.set_ylabel('Observed values')
52-
ax1.violinplot(dat)
51+
ax1.violinplot(data)
5352

5453
# customized violin
5554
ax2.set_title('Customized violin plot')
5655
parts = ax2.violinplot(
57-
dat, showmeans=False, showmedians=False,
56+
data, showmeans=False, showmedians=False,
5857
showextrema=False)
5958

6059
# customize colors
@@ -63,21 +62,17 @@ def set_axis_style(ax, labels):
6362
pc.set_edgecolor('black')
6463
pc.set_alpha(1)
6564

66-
# medians
67-
med = [np.percentile(sarr, 50) for sarr in dat]
68-
# inter-quartile ranges
69-
iqr = [[np.percentile(sarr, 25), np.percentile(sarr, 75)] for sarr in dat]
70-
# upper and lower adjacent values
71-
avs = [adjacent_values(sarr) for sarr in dat]
65+
medians = np.percentile(data, 50, axis=1)
66+
inter_quartile_ranges = list(zip(*(np.percentile(data, [25, 75], axis=1))))
67+
whiskers = [adjacent_values(sorted_array) for sorted_array in data]
7268

7369
# plot whiskers as thin lines, quartiles as fat lines,
7470
# and medians as points
75-
for i, median in enumerate(med):
76-
# whiskers
77-
ax2.plot([i + 1, i + 1], avs[i], '-', color='black', linewidth=1)
78-
# quartiles
79-
ax2.plot([i + 1, i + 1], iqr[i], '-', color='black', linewidth=5)
80-
# medians
71+
for i, median in enumerate(medians):
72+
ax2.plot([i + 1, i + 1], whiskers[i], '-', color='black', linewidth=1)
73+
ax2.plot(
74+
[i + 1, i + 1], inter_quartile_ranges[i], '-', color='black',
75+
linewidth=5)
8176
ax2.plot(
8277
i + 1, median, 'o', color='white',
8378
markersize=6, markeredgecolor='none')

0 commit comments

Comments
 (0)