Python Matplotlib绘制扇形图标签重叠问题解决过程
作者:老Amy 发布时间:2022-06-27 05:22:48
标签:matplotlib,扇形图,重叠
问题如下
当我使用Matplotlib绘制图形时,经常会遇到一些比例太小导致 百分比标签 以及 文本标签 重叠问题。这样的话非常影响美观,效果在BOSS心中的大打折扣。
代码如下:
from matplotlib import pyplot as plt
frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']
plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)
plt.show()
解决
老Amy不甘示弱,遇到问题就是肝!首先,我们解决的思路是,使得重叠标签中,一个进行向上挪动一丢丢即可。
那问题是代码怎么来实现呢?
首先,我们需要了解到,plt.pie()
有多个返回值,参考官网如下:
oh no,那有的朋友会说全英文的谁知道在巴巴啥,于是翻译过来如下:
patches 绘制饼图每一块的对象
texts 文本的列表
autotexts 百分比的文本列表
或者打印出来如下:
这样我们就明白了。所以第二步,我们需要考虑的是:如何取出我们需要的 文本对象 与 百分比对象 去设置距离。
了解到每个返回的数据类型实际上是 list
列表,而列表里面的每个元素就是图形中每个文本的对象。
所以,此时我们通过循环将重叠的元素取出来,而又因为构建绘图数据中,是索引为0与索引为1两个元素为0导致重叠。所以我们获取其中一个即可。
代码如下:
from matplotlib import pyplot as plt
frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']
patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)
for i in range(len(autotexts)):
if i == 0:
print(texts[i])
print(autotexts[i])
plt.show()
那问题是,我们怎么去设置它的位置呢?因为matplotlib
关于设置的方法非常多,而我们并不主张记忆,更加主张时用时查。所以这个时候就需要借助我们的官网了。
查官网的第一步是需要知道,该数据是什么类型的对象,则使用type()
输出其类型。
print(type(texts[i]))
print(type(autotexts[i]))
然后我们就去官网搜索matplotlib.text.Text
,定位:
ohohoh,至于这些英文就需要大家自己去看了,你懂的吧!所以接下来,我们来写代码解决我们的问题:
from matplotlib import pyplot as plt
frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']
patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)
for i in range(len(autotexts)):
if i == 0:
print(texts[i].set_y(0.1))
print(autotexts[i].set_y(0.1))
plt.show()
总结
来源:https://blog.csdn.net/weixin_44352981/article/details/116947159


猜你喜欢
- 在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX,
- 正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决(三)。
- 如何下载:我先去MySQL首页下载最新版本的MySQL-链接:https://www.mysql.com/downloads/进入此界面下载
- Python如何将一个长图制作成一个视频要将一个长图制作成视频,你可以使用Python中的一些库来完成这个任务。下面是一种基本的方法,使用P
- 目录Logging模块的使用简单使用指定日志输出样式日志记录到文件中自定义日志配置准备日志配置信息准备日志配置信息加载日志配置信息使用日志配
- 前言虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别才接触Python不久(之前是学Java的),实在想吐槽
- alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter t
- 抓取网页数据的思路有好多种,一般有:直接代码请求http、模拟浏览器请求数据(通常需要登录验证)、控制浏览器实现数据抓取等。这篇不考虑复杂情
- 代码如下所示:表landundertake结构如下所示:表appraiser结构如下所示:access代码:代码如下:TRANSFORM F
- 一、Matplotlib简介与安装Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。它可与
- 首先我们来看个示例:<form name="buyerForm" method="post"
- 1. 在router/index.js中使用meta属性的title设置好每个路由对应的title值/* router/index.js:
- 线程锁相当于同时只能有一个线程申请锁,有的场景无数据修改互斥要求可以同时让多个线程同时运行,且需要限制并发线程数量时可以使用信号量impor
- 前言在学习python的过程中,我们会使用到各种各样的第三方库,但是如何pip有n种方法,如系统提示 如在terminal中pip
- 一、Jupyter Notebook是什么?1.notebook jupyter简介Jupyter Notebook是一个开源Web应用程序
- 用Python画一个平面的太阳系得到一些朋友的欣赏,然后有同学提出了绘制三维太阳系的要求。从Python画图的角度来说,三维太阳系其实并不难
- 最近写了两个管理后台的前端页面,其中有一个管理后台,左侧菜单导航和右侧内容页是两个iframe,需求是,点击上面的主导航时,左侧iframe
- 什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你。我俩都这
- 本文实例讲述了python实现爬取千万淘宝商品的方法。分享给大家供大家参考。具体实现方法如下:import timeimport level
- 学Python中,自我感觉学的还不错的亚子~想做点什么来练练手,然后我疯狂的找各种小游戏的教程源码什么的,于是我就疯狂的找呀找呀,就找到了一