首页 > 编程语言 >Python——饼图

Python——饼图

时间:2023-05-26 22:46:01浏览次数:42  
标签:plt Python labels colors ax np import

matplotlib.pyplot.pie(
        x, explode=None, labels=None, colors=None, autopct=None,
        pctdistance=0.6, shadow=False, labeldistance=1.1,
        startangle=None, radius=None, counterclock=True,
        wedgeprops=None, textprops=None, center=(0, 0), frame=False,
        rotatelabels=False, *, data=None)

pie()函数的常用函数

参数名称 含义
x 传入的数据
explode 默认x的饼图不爆炸。自定义确定哪一块爆炸&爆炸距离。
labels和labeldistance 默认x没有标签,标签位于1.1倍半径处。自定义每块饼的标签,和位置。
autopct和pctdistance 默认x不显示每块饼的百分比标注。autopct自定义是每块饼的百分比属性,如几位小数, pctdistance默认在半径0.6位置显示百分数,自定义百分数距离半径的比例。
shadow 默认x是二维平面饼图,没有阴影。自定义饼图是否有阴影属性。
startangle 默认x第一块饼和水平面的角度不固定。自定义第一块饼图和水平面的角度。

1 示例

import matplotlib.pyplot as plt
import numpy as np

x = [1, 2, 3, 4]
colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.7, len(x)))

fig, ax = plt.subplots()
ax.pie(x, colors=colors, radius=3, center=(4, 4),
       wedgeprops={"linewidth": 1, "edgecolor": "white"}, frame=True)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

img

2 添加标签数值

import matplotlib.pyplot as plt
import numpy as np

x = [1, 2, 3, 4]
colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.7, len(x)))

fig, ax = plt.subplots()
ax.pie(x, colors=colors, radius=3, center=(4, 4),
       wedgeprops={"linewidth": 1, "edgecolor": "white"}, autopct='%.1f%%', frame=True)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

img

3 添加标签和数值

import matplotlib.pyplot as plt
import numpy as np

x = [1, 2, 3, 4]
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.7, len(x)))

fig, ax = plt.subplots()
ax.pie(x, colors=colors, radius=3, center=(4, 4),labels=labels, 
       wedgeprops={"linewidth": 1, "edgecolor": "white"}, autopct='%.1f%%', frame=True)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

img

4 爆炸某块饼(爆炸距离是半径的0.2)

import matplotlib.pyplot as plt
import numpy as np

x = [1, 2, 3, 4]
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.7, len(x)))
explode = (0, 0.2, 0, 0) # 只爆炸Hogs,爆炸距离是半径的0.2。

fig, ax = plt.subplots()
ax.pie(x, colors=colors,explode=explode, radius=3, center=(4, 4),labels=labels, 
       wedgeprops={"linewidth": 1, "edgecolor": "white"}, autopct='%.1f%%', frame=True)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

img

5 循环饼图

from itertools import groupby 
import matplotlib.pyplot as plt 
#设置图形中使用中文字体 
plt.rcParams['font.sans-serif']=['simhei'] 
#每门课程的成绩 
scores={'数据结构':[89,70,49,87,92,84,73,71,78,81,90,37,
                77,82.81,79,80,82,75,90,54,80,70,68,61], 
        '线性代数':[70,74,80,60,50,87,68,77,95,80,79,74,
                69,64,82,81,78,90,78,79,72,69,45,70,70,79],
        '英语':[83,87,69,55,80,89,96,81,83,90,5470,79,
              66,85,82,88,76,60,80,75,83,75,70,20],
        'Python':[90,60,82,79,88,92,85,87,89,71,45,50,
                  80,81,87,93,80,70,68,65,85,89,80,72,75]} 
#自定义分组函数,在下面的groupby()函数中使用 
def splitscore(score):
    if score>=85:
        return '优'
    elif score>=60: 
        return '及格' 
    else: 
        return '不及格' 
#统计每门课程中优、及格、不及格的人数 
ratios=dict() 
for subject,subjectScore in scores.items(): 
    ratios[subject]={} 
    #groupby()函数需要对原始分数进行排序才能正确分类 
    for category,num in groupby(sorted(subjectScore),splitscore):
        ratios[subject][category]=len(tuple(num)) 

#创建4个子图 
fig,axs=plt.subplots(2,2)
axs.shape=4, 
#依次在4个子图中绘制每门课程的饼状图 
for index, subjectData in enumerate(ratios.items()):
    #选择子图 
    plt.sca(axs[index]) 
    subjectName, subjectRatio = subjectData #每个扇形对应的数值 
    plt.pie(list(subjectRatio.values()),
            labels=list(subjectRatio.keys()),#每个扇形的标签 
            autopct='%1.1f%%')  #百分比显示格式 
    plt.xlabel(subjectName)
    plt.legend() 
    plt.gca().set_aspect('equal') #设置纵横比相等
plt.show()

img

标签:plt,Python,labels,colors,ax,np,import
From: https://www.cnblogs.com/Rshimmer/p/17435998.html

相关文章

  • python 日期函数的使用
    计算一段时间内,周六出现的次数。如果是周六,则 5==dt_start.weekday()这里用到了2个主要的日期函数datetime_to_date_int,date_int_to_datetime importdatetimedefdatetime_to_date_int(dt):ifisinstance(dt,datetime.datetime):dt=dt.date()......
  • 使用这些方法让你的 Python 并发任务执行得更好
    动动发财的小手,点个赞吧!问题一直以来,Python的多线程性能因为GIL而一直没有达到预期。所以从3.4版本开始,Python引入了asyncio包,通过并发的方式并发执行IO-bound任务。经过多次迭代,asyncioAPI的效果非常好,并发任务的性能相比多线程版本有了很大的提升。但是,程序员在使......
  • 2.3Tucker分解HOSVD、HOOI算法推导和python实现
    HOSVD参考论文:AMULTILINEARSINGULARVALUEDECOMPOSITIONHOSVD虽然不能保证给Tucker分解给出最优拟合,但是可以提供一个好的初始化的解这些矩阵都是正交的。之所以求前R最大特征值,可以在下文的HOOI看到,目的是最大化目标函数UWHOSVD的最后一行证明如下:HOOI:黄色之所以可以化过去,......
  • python md5源码
    importbinasciiimportsysimportos.pathSV=[0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,0xa679438e,0x49b40......
  • python day3
    上篇案例  #我写的importrandomnum=random.randint(1,10)print(num)a=int(input("请输入数字"))ifa==num:print("bingo!")elifa>num:b=int(input("大了,还有两次机会,重新输入"))ifb>num:c=int(input(&qu......
  • Python 使用Seaborn画图,代码正常不出图
    不得不说,这个库画出来的图也太好看了。目前还没有很懂这个库,但是需要注意的是我在用完plt之后引入这个,图片一直出不来真的困扰我很久啊。终于找到了救命的办法参考链接:https://blog.csdn.net/qq_56039091/article/details/124024286......
  • 【python基础】变量
    1.初识变量编程本质就是通过一定的规则,去操纵数据,变量作为数据的载体,在程序中经常会被用到。与变量相联系的还有一个名词叫数据类型,我们可以举一个生活中的例子,来理解数据类型-变量-数据三者之间的关系红色的1号杯子中装满了水,其中红色就代表数据类型,1号杯子就代表变量,而水就代......
  • 使用 OpenCV 进行轮廓检测 (Python/C++)第一部分
    什么是轮廓当我们连接一个对象边界上的所有点时,我们得到一个轮廓。通常,特定轮廓是指具有相同颜色和强度的边界像素。OpenCV使得在图像中查找和绘制轮廓变得非常容易。它提供了两个简单的功能:findContours()drawContours()此外,它有两种不同的轮廓检测算法:CHAIN_APPROX_SIMPLECHAIN_......
  • Python Web开发:深入剖析Web框架及其实现方式
    1.引言在现代Web应用程序开发中,Python是最受欢迎的编程语言之一。它是一种高级、通用、解释性的语言,被广泛应用于开发Web应用程序、科学计算、数据分析、视觉化和人工智能等领域。Python语言旨在提高开发者的生产力,并让他们以更少的代码实现更多的功能。在本文中,我们将讨论Python......
  • Numpy_矩阵的multiply_python的属性以及类特性_装饰器——@property_@classmethod_@st
    Python类中有三个常用的装饰器分别是@property(使一个方法可以被当成属性调用,常用于直接返回某一不想被修改的属性)@classmethod(将一个方法定义为类方法,其中第一个参数要修改为cls,使得该方法可以不用实例化即可被调用)@staticmethod(静态方法,类似于类方法,也可以不用实例化,......