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

 更新时间:2022年08月03日 08:49:29   作者:老Amy  
在使用Matplotlib画图时,常会遇到标签重叠问题的时候,所以下面这篇文章主要给大家介绍了关于Python 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()

总结 

到此这篇关于Python Matplotlib绘制扇形图标签重叠问题解决的文章就介绍到这了,更多相关Matplotlib绘制扇形图标签重叠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 函数参数11个案例分享

    Python 函数参数11个案例分享

    大家好,今天给大家分享一下明哥整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章应该对你会有不小的帮助,需要的朋友可以参考下
    2023-02-02
  • Python  reduce()函数的用法示例代码

    Python  reduce()函数的用法示例代码

    reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中,这篇文章主要介绍了Python reduce()函数的用法,需要的朋友可以参考下
    2023-05-05
  • Python基类函数的重载与调用实例分析

    Python基类函数的重载与调用实例分析

    这篇文章主要介绍了Python基类函数的重载与调用方法,实例分析了Python中基类函数的重载及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • pandas实现对一列/多列进行数据区间筛选

    pandas实现对一列/多列进行数据区间筛选

    这篇文章主要介绍了pandas实现对一列/多列进行数据区间筛选方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python实现解析参数的三种方法详解

    Python实现解析参数的三种方法详解

    这篇文章主要介绍了python解析参数的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-07-07
  • 一文带你深入了解Python中的多进程编程

    一文带你深入了解Python中的多进程编程

    在 Python 中,多进程编程是一种提高程序运行效率的有效手段,本文将详细讲解 Python 多进程编程的基本概念,使用方法及注意事项,希望对大家有所帮助
    2024-12-12
  • Python运行时修改业务SQL代码

    Python运行时修改业务SQL代码

    这篇文章主要介绍了Python运行时修改业务SQL代码,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • python str字符串转uuid实例

    python str字符串转uuid实例

    这篇文章主要介绍了python str字符串转uuid实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 基于python框架Scrapy爬取自己的博客内容过程详解

    基于python框架Scrapy爬取自己的博客内容过程详解

    这篇文章主要介绍了基于python框架Scrapy爬取自己的博客内容过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 在Django的通用视图中处理Context的方法

    在Django的通用视图中处理Context的方法

    这篇文章主要介绍了在Django的通用视图中处理Context的方法,Django是最具人气的Python web开发框架,需要的朋友可以参考下
    2015-07-07

最新评论