python - matplot pie:水平旋转标签
问题描述
使用 matplot 创建一个小量规,代码如下:
group_size=[10,10,10,10,10,50]
labels=['AAAA','BBBB','CCCC','DDDD','EEEE','']
fig, ax = plt.subplots()
ax.axis('equal')
pie = ax.pie(group_size, radius=2.2, colors=['k'] ,startangle=180,counterclock=False)
pie2 = ax.pie([10,10,10,10,10,50], radius=2, labeldistance=0.7, labels=labels, rotatelabels = 270,
startangle=180,counterclock=False)
plt.show()
我试图让标签水平移动并与每个楔形的中点对齐(但与楔形内的文本):
使用rotatelabel=True,我得到以下信息:
关于如何实现图表标签水平旋转的任何想法?
解决方案
您需要手动旋转饼图标签。为此,您可以遍历标签并根据需要设置旋转。
group_size=[10,10,10,10,10,50]
labels=['AAAA','BBBB','CCCC','DDDD','EEEE','']
fig, ax = plt.subplots()
ax.axis('equal')
pie = ax.pie(group_size, radius=2.2, colors=['k'] ,startangle=180,counterclock=False)
pie2 = ax.pie([10,10,10,10,10,50], radius=2, labeldistance=0.9, labels=labels,
rotatelabels =True, startangle=180,counterclock=False)
plt.setp(pie2[1], rotation_mode="anchor", ha="center", va="center")
for tx in pie2[1]:
rot = tx.get_rotation()
tx.set_rotation(rot+90+(1-rot//180)*180)
plt.show()
推荐阅读
- mysql - 将 MySql 查询的结果转换为数组
- javascript - 图片 URL 没有进入 Vue 组件?
- python - 在python中拆分.txt文件
- reactjs - useEffect hook - 依赖项 - 重新渲染问题
- php - PHP - 突出显示字符串中的字符
- arrays - MongoDB 对象数组
- javascript - 如何正确设置 npm onchange 脚本?
- php - Autodesk forge 与 php
- javascript - Vue 中的井号 (#) 是什么意思?
- azure - 如何在 Azure Devops API 中获取 userId 字段