python - 图形在 matplot-离散分布图中不起作用
问题描述
任何人都可以帮助我使用 pandas 和 matplotlib 对以下数据集进行编程,以创建一个看起来像我添加的图形或任何远程相似的图形。任何帮助都意味着世界
df1=df.loc[[0,1,2,3,4,5,6,7]]
print(df1)
partNames=['Conservative', 'Labour', 'Lib Dem', 'SNP', 'Green Party',
'Brexit', 'Plaid','Other']
results = {
'18-19':[df1.loc[0, 'Groups' : 'Other']],
'20-24':[df1.loc[1, 'Groups' : 'Other']],
'25-29':[df1.loc[2, 'Groups' : 'Other']],
'30-39':[df1.loc[3, 'Groups' : 'Other']],
'40-49':[df1.loc[4, 'Groups' : 'Other']],
'50-59':[df1.loc[5, 'Groups' : 'Other']],
'60-69':[df1.loc[6, 'Groups' : 'Other']],
'70+':[df1.loc[7, 'Groups' : 'Other']],
}
def survey(results, partNames ):
labels = list(results.keys())
data = np.arange(len(df1.Groups))
data_cum = data.cumsum(axis=0)
category_colors = plt.get_cmap('RdYlGn')(
np.linspace(0.15, 0.85, data.shape[]))
fig, ax = plt.subplots(figsize=(9.2, 5))
ax.invert_yaxis()
ax.xaxis.set_visible(False)
ax.set_xlim(0, np.sum(data, axis=1).max())
for i, (colname, color) in enumerate(zip(partNames, category_colors)):
widths = data[:, i]
starts = data_cum[:, i] - widths
ax.barh(labels, widths, left=starts, height=0.5,
label=colname, color=color)
xcenters = starts + widths / 2
r, g, b, _ = color
text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
for y, (x, c) in enumerate(zip(xcenters, widths)):
ax.text(x, y, str(int(c)), ha='center', va='center',
color=text_color)
ax.legend(ncol=len(partNames), bbox_to_anchor=(0, 1),
loc='lower left', fontsize='small')
return fig, ax
survey(results, partNames)
plt.show()
我不断收到错误,例如元组索引超出范围或回溯错误,特别是在:np.linspace(0.15, 0.85, data.shape[]))
解决方案
推荐阅读
- azure - Azure OMSforLinux 功能
- php - Laravel Eloquent 访问第三关系
- php - 如何在将选定的数组值发送到 mysql 之前将其内爆?(CakePHP)
- postgresql - 使用 postgres db 在 Spring Boot JPA 中自定义查询
- php - 为什么找不到“类'DI\Bridge\Slim\App'”?PHP
- javascript - 在 Paypal“添加到购物车”按钮中插入下拉菜单、文本字段和复选框
- c# - 如何使用c#.net根据日期从sql数据库中删除元素
- javascript - 如何在 javascript 事件中引用当前的 Vuex 状态和相关的 Vue 实例(this)?
- jenkins - 如何使用 github 为每个 PR 设置 Webhook 以触发 Jenkins Job
- android - 使用 LiveData 在 ViewModel 上测试功能