8000 Make bar of pie example more explicit · matplotlib/matplotlib@6c2e79b · GitHub
[go: up one dir, main page]

Skip to content

Commit 6c2e79b

Browse files
committed
Make bar of pie example more explicit
... by saving and using the results from Axes method calls. Also, replace the colour palette in the bar chart.
1 parent c66e304 commit 6c2e79b

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

examples/pie_and_polar_charts/bar_of_pie.py

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,36 @@
1919
fig.subplots_adjust(wspace=0)
2020

2121
# pie chart parameters
22-
ratios = [.27, .56, .17]
22+
overall_ratios = [.27, .56, .17]
2323
labels = ['Approve', 'Disapprove', 'Undecided']
2424
explode = [0.1, 0, 0]
2525
# rotate so that first wedge is split by the x-axis
26-
angle = -180 * ratios[0]
27-
ax1.pie(ratios, autopct='%1.1f%%', startangle=angle,
28-
labels=labels, explode=explode)
26+
angle = -180 * overall_ratios[0]
27+
wedges, *_ = ax1.pie(overall_ratios, autopct='%1.1f%%', startangle=angle,
28+
labels=labels, explode=explode)
2929

3030
# bar chart parameters
31-
32-
xpos = 0
33-
bottom = 0
34-
ratios = [.33, .54, .07, .06]
31+
approved_ratios = [.33, .54, .07, .06]
32+
bottom = 1
3533
width = .2
36-
colors = [[.1, .3, .5], [.1, .3, .3], [.1, .3, .7], [.1, .3, .9]]
3734

38-
for j in range(len(ratios)):
39-
height = ratios[j]
40-
ax2.bar(xpos, height, width, bottom=bottom, color=colors[j])
< EBD5 code>41-
ypos = bottom + ax2.patches[j].get_height() / 2
42-
bottom += height
43-
ax2.text(xpos, ypos, "%d%%" % (ax2.patches[j].get_height() * 100),
44-
ha='center')
35+
# Adding from the top matches the legend without have to explicitly re-order
36+
# the legend.
37+
for j, height in enumerate(reversed(approved_ratios)):
38+
bottom -= height
39+
bc = ax2.bar(0, height, width, bottom=bottom, color='C0',
40+
alpha=0.1 + 0.25 * j)
41+
ax2.bar_label(bc, labels=["%d%%" % (height * 100,)], label_type='center')
4542

4643
ax2.set_title('Age of approvers')
47-
ax2.legend(('50-65', 'Over 65', '35-49', 'Under 35'))
44+
ax2.legend(('Under 35', '35-49', '50-65', 'Over 65'))
4845
ax2.axis('off')
4946
ax2.set_xlim(- 2.5 * width, 2.5 * width)
5047

5148
# use ConnectionPatch to draw lines between the two plots
52-
# get the wedge data
53-
theta1, theta2 = ax1.patches[0].theta1, ax1.patches[0].theta2
54-
center, r = ax1.patches[0].center, ax1.patches[0].r
55-
bar_height = sum([item.get_height() for item in ax2.patches])
49+
theta1, theta2 = wedges[0].theta1, wedges[0].theta2
50+
center, r = wedges[0].center, wedges[0].r
51+
bar_height = sum(approved_ratios)
5652

5753
# draw top connecting line
5854
x = r * np.cos(np.pi / 180 * theta2) + center[0]

0 commit comments

Comments
 (0)
0