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绘制扇形图标签重叠内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Python+Matplotlib绘制渐变色扇形图与等高线图

    目录 渐变色扇形图 等高线 渐变色扇形图 使用 python - matplotlib 颜色地图plt.cm模块儿,来绘制出颜色渐变.更加好看的扇形图.也称彩虹图,但是也不限于彩虹图,可以选择的颜色地图(colormap)有: Paired, autumn, rainbow, gray, spring, Darks. 下边以颜色地图rainbow为例(彩虹图),写出以下代码,并展示各种颜色样式下的图像效果. import pandas as pd import numpy as np impor

  • 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]'] p

  • 如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一.matplotlib绘制圆形雷达图 # coding=utf-8 import numpy as np import matplotlib.pyplot as plt results = [{"大学英语": 87, "高等数学": 79, "体育":

  • 详解Python+Matplotlib绘制面积图&热力图

    目录 1.绘制面积图 2.绘制热力图 1.绘制面积图 面积图常用于描述某指标随时间的变化程度.其面积也通常可以有一定的含义. 绘制面积图使用的是plt.stackplot()方法. 以小学时期学的 常见的追击相遇问题中的速度时间图像为例,下边绘制出一幅简单的v-t图像. 全局字体设为默认的黑体,时间为从第0秒到第10秒,描述的是甲乙两个物体的速度.显然,面积则表示位移. 标题部分字体使用楷体(将系统中的TTF字体文件"STKAITI.TTF"复制到了当前目录下). import mat

  • Python Matplotlib绘制动图平滑曲线

    目录 绘制动图 FuncAnimation ArtistAnimation 使用 scipy.ndimage.gaussian_filter1d() 高斯核类绘制平滑曲线 使用 scipy.interpolate.make_interp_spline() 样条插值类绘制平滑曲线 使用 scipy.interpolate.interp1d 插值类绘制平滑曲线 拟合曲线后绘制动图 绘制动图 FuncAnimation,它的使用要求简洁且定制化程度较高.如果想将很多图片合并为一个动图,那么Artist

  • python matplotlib绘制三维图的示例

    作者:catmelo 本文版权归作者所有 链接:https://www.cnblogs.com/catmelo/p/4162101.html 本文参考官方文档:http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html 起步 新建一个matplotlib.figure.Figure对象,然后向其添加一个Axes3D类型的axes对象. 其中Axes3D对象的创建,类似其他axes对象,只不过使用projection='3d'关键词. impo

  • Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 二.matplotlib图像简介 matplotlib的图像分为三层,容器层.辅助显示层和图像层. 1. 容器层主要由Canvas.Figure.Axes组成. Canvas位

  • python使用matplotlib绘制折线图的示例代码

    示例代码如下: #!/usr/bin/python #-*- coding: utf-8 -*- import matplotlib.pyplot as plt # figsize - 图像尺寸(figsize=(10,10)) # facecolor - 背景色(facecolor="blue") # dpi - 分辨率(dpi=72) fig = plt.figure(figsize=(10,10),facecolor="blue") #figsize默认为4,

  • python 用matplotlib绘制折线图详情

    目录 1. 折线图概述 1.1什么是折线图? 1.2折线图使用场景 1.3绘制折线图步骤 1.4案例展示 2. 折线2D属性 2.1linestyle:折线样式 2.2color:折线颜色 2.3marker:坐标值标记 2.4fillstyle:标记填充方法 2.5linewidth(lw): 直线宽度 3. 坐标管理 3.1坐标轴名字设置 3.2坐标轴刻度设置 3.3坐标轴位置设置 3.4指定坐标值标注 4. 多条折线展示图 5. 图列管理 复习回顾: 众所周知,matplotlib 是一款

  • Python调用Matplotlib绘制振动图、箱型图和提琴图

    目录 Matplotlib介绍 振动图 箱型图 提琴图 Matplotlib介绍 Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy  ndarray 数组来绘制 2D 图像,它使用简单.代码清晰易懂,深受广大技术爱好者喜爱. NumPy 是 Python 科学计算的软件包,ndarray 则是 NumPy 提供的一种数组结构. Matplotlib 由 John D. Hunter 在 2002 年开始编写, 2003 年 Matplot

  • Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图

    目录 matplotlib介绍 matplotlib绘制折线图 matplotlib绘制柱状图 matplotlib绘制柱线混合图 总结 matplotlib介绍 Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 PyQt 和 wxPython. 安装Matplotlib库命令:在cmd命令窗口输入pip install matplotlib. matplotlib绘制折线图 1.绘

随机推荐