概述

由于饼图/圆环图的饼块大小和饼块背景色影响,直接在饼块上添加注释或标签效果并不好,往往需要在饼块外添加标签,并在标签与饼块之间添加引导线。matplotlib没有提供直接绘制引导线的接口,需要自己定义。

添加引导线的思路如下:

  • 计算饼块的角度。
  • 计算注释标签的坐标。
  • 判断饼块位于圆环的左侧或右侧,确定标签文本的对齐方式。
  • 确定引导线的连接样式,使引导线从饼块指向注释标签。
  • 使用annotate函数绘制注释标签和引导线。

案例:绘制圆环图的引导线

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams["font.family"] = ["simhei"]data = {"机械": 120, "电子": 90, "计算机": 50, "经管": 60, "建筑": 100, "汽车": 50}
# 构造数据
data = pd.DataFrame([data])
# 绘制圆环图,并返回饼块对象
wedges, texts = plt.pie(data.iloc[0], wedgeprops={"width": 0.5})
# 构造annotate函数的**kwargs参数,设置引导线线型
kw = dict(arrowprops=dict(arrowstyle="-"), zorder=0, va="center")
# 遍历饼块绘制注释标签和引导线
for i, p in enumerate(wedges):# 根据matplotlib.patches.Wedge对象的theta1和theta2参数计算饼块均分点的角度ang = (p.theta2 - p.theta1) / 2.0 + p.theta1# 根据角度的弧度计算 饼块均分点的坐标(引导线的起点)y = np.sin(np.deg2rad(ang))x = np.cos(np.deg2rad(ang))# print(p.theta1, p.theta2, ang, np.deg2rad(ang), x, y)# 演示引导线起点位置# plt.plot(x, y, "or")# 根据x的值即角度所在象限确定引导线的对齐方式horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]# 设置引导线的连接方式connectionstyle = "angle,angleA=0,angleB={}".format(ang)kw["arrowprops"].update({"connectionstyle": connectionstyle})# 绘制注释标签和引导线plt.annotate(data.columns[i],xy=(x, y),xytext=(1.35 * np.sign(x), 1.4 * y),horizontalalignment=horizontalalignment,**kw)plt.title("专业人数占比")plt.show()

matplotlib:为饼图或圆环图添加引导线相关推荐

  1. 使用echart画出渐变色饼图(圆环图环形渐变)

    使用echart画出渐变色饼图(圆环图环形渐变) 说明 常用的渐变有径向渐变和线性渐变, 环形图是 echarts 中 pie 图的一个变种,echarts 官方对于 pie 图的颜色渐变只支持两种: ...

  2. word饼图如何画引导线_excle怎么画立体饼图/如何在饼形图中添加引导线(Excel)...

    2016版的Excel 里的三维饼图怎么制作? 2016版的Excel 里的三维饼图的制作如下: 1.首先我们打我们的电脑后我们打开excel,之后我们在excel中输入数据:之后我们选中这些数据的单 ...

  3. word饼图如何画引导线_#excel表格饼状图制作#如何在饼形图中添加引导线(Excel)...

    用excel如何做美观的饼状图? iPhone开不了机按键 excel如何做饼形图的数据分析 解决excel如何做饼形图的数据分析的步骤: 1.选择插入,,选择二维饼图第一个. 2.在表格右击,选择数 ...

  4. 饼图加引导线_如何在饼形图中添加引导线(Excel)/

    excel的饼图如何显示百分比的小数! 1.选中数据. 2.点击插入饼状图. 3.插入饼状图后中饼状图,点击右上角的加号. 4.勾据标签,数据就出来了. 5.选中数据,点击鼠标右键,选择设置数据标签格 ...

  5. 用Python pyecharts v1.x 绘制图形(一):柱状图、柱状堆叠图、条形图、直方图、帕累托图、饼图、圆环图、玫瑰图

    文章目录 关于pyecharts 柱状图 堆叠柱状图 条形图 直方图 帕累托图(复合图) 饼图 圆环图 玫瑰图 下一节 关于pyecharts pyecharts是一个用于生成echart(百度开源的 ...

  6. 饼图加引导线_【如何在饼形图中添加引导线(Excel)】excle里面一条竖状线

    EXCEL中如何插入图表,有两个竖轴,图内一个柱状,一个线状图, 在EXCEL中先做好表格(需要的数据),点击插入中的图表.选择自定义图标,其中有项柱状-线状格式.点击下一步后按步骤就可以完成了 Ex ...

  7. 旭日图超越了传统的饼图和圆环图,能表达清晰的多层级和归属关系

    "旭日图是什么?用来干什么?" "没听说过旭日图......" "旭日图不就是多层饼图嘛......" 鉴于很多人对旭日图都不太了解,那今天 ...

  8. EXCEL进阶:图表中添加引导线

    在业务场景中,每当查看月度完成情况是否达到月度目标值的时候,以及每个月的完成趋势情况,就会用到折线图,可目标如果是恒定不变的,在excel图表中就会显示一条横线,如果我想查看目标值是多少,就会添加数据 ...

  9. 去掉Echarts饼状图的引导线

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>五分钟 ...

最新文章

  1. 敏捷研发落地之持续集成
  2. 9patch的用法,简单两句就会用了。
  3. MySQL之数据库对象查看工具mysqlshow
  4. 信息抽取--关键词提取
  5. 微博API接入初识【cxn专用】
  6. 权限判断 java_一个简单的关于权限判断登陆的javaBean文件
  7. c语言正则表达式库,c语言正则表达式库--PCRE
  8. 河工计算机学院抖肩舞,来了来了!河工大版抖肩舞已上线~
  9. [转载]浅谈敏捷管理在软件项目中应用
  10. 关于中缀表达式的计算 和算符优先算法
  11. 数字滤波算法——中值滤波
  12. WAS:WAS 6.1/7.0上EJB客户端开发
  13. movielens 1m 的mysql_数据分析实例-MovieLens 1M 数据集
  14. OPPO消息推送服务器,OPPO开放平台消息推送申请教程
  15. 数据聚合与分组操作(数据分析)
  16. UML 基本模型元素
  17. WebGIS第一课:测试高德API并通过
  18. linux命令前的$是什么意思,linux中$符号的基础用法总结
  19. 新墨斯智能鞋让你成为健康达人
  20. 孙陶然:聪明工作就是要先问目的

热门文章

  1. python获取未读邮箱数目_利用腾讯企业邮箱开放API获取账户未读邮件数初探
  2. Qualcomm DragonBoard 410c Display之DSI浅析
  3. 聚铭网络正式当选南京大数据产业协会理事单位
  4. win8 破解myeclipse10.x
  5. DNS服务器未响应的解决办法(试过很多csdn的那些改dns的办法都没用)
  6. 朋友高考没考好怎么安慰的话
  7. IT外企那点儿事(5-7)
  8. 全国计算机等级考试二级 Python 软件安装指南
  9. BZOJ 1502 NOI 2005 月下柠檬树
  10. 修改mendeley字体