Python Matplotlib绘制扇形图标签重叠问题解决过程

作者:老Amy 时间:2022-06-27 05:22:48 

问题如下

当我使用Matplotlib绘制图形时,经常会遇到一些比例太小导致 百分比标签 以及 文本标签 重叠问题。这样的话非常影响美观,效果在BOSS心中的大打折扣。

Python Matplotlib绘制扇形图标签重叠问题解决过程

代码如下:

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()有多个返回值,参考官网如下:

Python Matplotlib绘制扇形图标签重叠问题解决过程

oh no,那有的朋友会说全英文的谁知道在巴巴啥,于是翻译过来如下:

  • patches 绘制饼图每一块的对象

  • texts 文本的列表

  • autotexts 百分比的文本列表

或者打印出来如下:

Python Matplotlib绘制扇形图标签重叠问题解决过程

这样我们就明白了。所以第二步,我们需要考虑的是:如何取出我们需要的 文本对象百分比对象 去设置距离。

了解到每个返回的数据类型实际上是 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()

Python Matplotlib绘制扇形图标签重叠问题解决过程

那问题是,我们怎么去设置它的位置呢?因为matplotlib关于设置的方法非常多,而我们并不主张记忆,更加主张时用时查。所以这个时候就需要借助我们的官网了。

查官网的第一步是需要知道,该数据是什么类型的对象,则使用type()输出其类型。

print(type(texts[i]))
print(type(autotexts[i]))

Python Matplotlib绘制扇形图标签重叠问题解决过程

然后我们就去官网搜索matplotlib.text.Text,定位:

Python Matplotlib绘制扇形图标签重叠问题解决过程

Python Matplotlib绘制扇形图标签重叠问题解决过程

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()

Python Matplotlib绘制扇形图标签重叠问题解决过程

总结 

来源:https://blog.csdn.net/weixin_44352981/article/details/116947159

标签:matplotlib,扇形图,重叠
0
投稿

猜你喜欢

  • pyftplib中文乱码问题解决方案

    2023-11-10 11:34:07
  • SQL Server数据库服务器高性能设置

    2010-11-25 16:00:00
  • 使用Eclipse如何开发python脚本

    2022-06-25 12:41:39
  • 教程javascript的function(函数)

    2007-09-30 13:38:00
  • 浅谈图表参数化设计

    2010-08-29 18:03:00
  • python3使用diagrams绘制架构图的步骤

    2022-08-27 12:42:34
  • XHTML中id与class的使用原则与技巧

    2007-12-17 13:07:00
  • python3使用python-redis-lock解决并发计算问题

    2021-05-09 16:04:18
  • python 元组和列表的区别

    2021-08-25 19:01:27
  • Python图片验证码降噪和8邻域降噪

    2023-09-16 10:05:49
  • FrontPage 2000主页设计问与答

    2008-08-02 12:37:00
  • 使用python语言,比较两个字符串是否相同的实例

    2023-08-24 15:01:14
  • Variant总能找到与之相匹配的数据类型吗?

    2009-10-29 12:20:00
  • sklearn线性逻辑回归和非线性逻辑回归的实现

    2021-06-16 04:04:31
  • Python3实现将文件归档到zip文件及从zip文件中读取数据的方法

    2021-07-03 18:21:00
  • Python用字典构建多级菜单功能

    2021-06-04 11:26:13
  • Python3实现的回文数判断及罗马数字转整数算法示例

    2023-07-07 05:10:06
  • 如何用python写个模板引擎

    2022-07-29 06:09:45
  • asp.net(c#)实现从sqlserver存取二进制图片的代码

    2023-06-26 21:48:03
  • 对python字典元素的添加与修改方法详解

    2023-10-19 09:36:04
  • asp之家 网络编程 m.aspxhome.com