<p>百分比栏:<br/>
我想应该是这样的(ps):
<a href="https://i.stack.imgur.com/B0cTY.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/B0cTY.jpg" alt="enter image description here"/></a></p>
<p>但plt是:
<a href="https://i.stack.imgur.com/ORPmO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ORPmO.png" alt="enter image description here"/></a></p>
<p>守则如下:</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df2 = pd.read_csv('data.csv')
people = ('F', 'M')
segments = 4
# multi-dimensional data
arr = ['25to29Recovered', '25to29Mild', '30to44Recovered', '30to44Mild', '45to49Recovered', '45to49Mild']
data = np.asarray([[1, 2],#25to29Recovered
[3, 4],#25to29Mild
[5, 6],#30to44Recovered
[7, 8],#30to44Mild
[9, 10],#45to49Recovered
[11, 12],#45to49Mild
])
percentages = np.zeros((data.shape[1], data.shape[0]))
col_sum = np.sum(data, axis=0)
for i in range(data.shape[0]):
for j in range(len(data[i])):
percentages[j, i] = data[i, j] / col_sum[j] * 100
y_pos = np.arange(len(people))
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111)
colors = 'rgbm'
patch_handles = []
bottom = np.zeros(len(people))
for i, d in enumerate(data):
patch_handles.append(ax.bar(y_pos, d,
color=colors[i % len(colors)], align='center',
bottom=bottom))
bottom += d
# search all of the bar segments and annotate
for j in range(len(patch_handles)):
for i, patch in enumerate(patch_handles[j].get_children()):
bl = patch.get_xy()
x = 0.5 * patch.get_width() + bl[0]
y = 0.5 * patch.get_height() + bl[1]
ax.text(x, y, "%s\n%d%%" % (arr[j],percentages[i, j]), ha='center')
plt.show()
</code></pre>