Matplotlib绘制漂亮的饼状图|python绘制漂亮的饼状图

news2024/11/17 11:28:26

python绘图系列文章目录

往期python绘图合集:
python绘制简单的折线图
python读取excel中数据并绘制多子图多组图在一张画布上
python绘制带误差棒的柱状图
python绘制多子图并单独显示
python读取excel数据并绘制多y轴图像
python绘制柱状图并美化|不同颜色填充柱子
python随机生成数据并用双y轴绘制两条带误差棒的折线图
Python绘制带误差棒的柱状图渐变色填充含数据标注(进阶)
python绘制散点图|散点大小和颜色深浅由数值决定


本文目录

  • python绘图系列文章目录
  • 1、 安装和导入 Matplotlib
  • 2、 绘制简单的饼状图
  • 3、 绘制复杂的饼状图
    • 3.1 准备工作
  • 4 、绘制子图和设置坐标轴
    • 4.1 运行结果

饼状图是数据可视化中常见的一种类型,能够直观地表示各类别在总体中所占的比例。Matplotlib 是 Python 中常用的数据可视化库,提供了丰富的绘图工具和函数,包括绘制饼状图的方法。

本文将介绍如何使用 Matplotlib 绘制复杂的饼状图,包含多个子图以及两个坐标轴。我们将结合实例代码进行讲解,帮助读者快速掌握饼状图的绘制方法和技巧。

1、 安装和导入 Matplotlib

# 使用 pip 安装 Matplotlib
pip install matplotlib
# 使用 conda 安装 Matplotlib
conda install matplotlib

安装完成后,可以在 Python 中导入 Matplotlib 库,通常使用以下方式:

import matplotlib.pyplot as plt

2、 绘制简单的饼状图

为了更好地理解和掌握饼状图的基本绘制方法,我们先来看一个简单的例子。假设有四种动物,它们分别是青蛙、猪、狗和木头,它们分别占据了总动物数量的 15%、30%、45% 和 10%。我们可以使用 Matplotlib 来绘制这个饼状图,并将它们按逆时针顺序从大到小排列。代码如下:

import matplotlib.pyplot as plt

# 各类别的标签和比例
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

# 饼状图中各部分的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# 绘制饼状图
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)
# 显示图形
plt.show()

在上述代码中,我们首先定义了四个动物种类的标签和比例变量,分别存放了它们的名称和所占比例。然后,我们定义了饼状图中各部分的颜色,用于美化图形。最后,使用 plt.pie() 方法绘制了饼状图,并传递了各种参数,如标签、颜色、百分比格式和起始角度。最后,运行 plt.show() 显示图形。绘制完成后,我们将得到一个简单的饼状图。
在这里插入图片描述

3、 绘制复杂的饼状图

在实际情况中,我们可能需要绘制更加复杂和详细的饼状图,以更好地展示数据。下面,我们将介绍如何使用 Matplotlib 绘制一个包含多个子图和坐标轴的复杂饼状图。

3.1 准备工作

首先,我们需要导入一些必要的库和模块:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

其中,NumPy 是 Python 中处理数值计算的常用库,Matplotlib 则是绘制图形的核心库。此外,我们还导入了 FontProperties 类,用于设置字体属性。

接下来,我们定义一些变量,用于存储饼状图中各部分的标签、比例和颜色。代码如下:

# 饼状图中各部分的标签、比例和颜色
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', '#FF0000', 'lightcoral']

4 、绘制子图和设置坐标轴

为了绘制复杂的饼状图,我们需要使用 plt.subplots() 方法创建多个子图,并在每个子图上绘制不同的饼状图。同时,我们还需要设置两个坐标轴,以便更好地展示数据。代码如下:

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.font_manager import FontProperties
# The slices will be ordered and plotted counter - clockwise . 
labels =' Frogs ',' Hogs ',' Dogs ',' Logs '
sizes =[15,30,45,10]

colors =['yellowgreen','gold','#FF0000','lightcoral'] 

explode =(0,0.15,0,0.2)
#使饼状图中第2片和第4片裂开
fig = plt.figure(dpi=300) 

font = FontProperties(fname=r"c:\windows\fonts\times.ttf", size=12)

ax = fig.gca ()

ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,1), frame = True,)
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(-1,1), frame = True )
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font},
autopct ='%1.lf%%', shadow = True , startangle =90, radius =0.8, center =(-1,-1), frame = True )
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,-1), frame = True )

ax.set_xticks ([-1,1])
ax.set_yticks ([-1,1])
ax.set_xticklabels ([" Sunny "," Cloudy "],fontname='Times New Roman',fontsize=14)#设置坐标轴刻度上显示的标签 
ax.set_yticklabels ([" Dry "," Rainy "],fontname='Times New Roman',fontsize=14)
ax.set_xlim ((-2.5,2.5))
ax.set_ylim ((-2.5,2.5))
# Set aspect ratio to be equal so that pie is drawn as a circle . ax . set _ aspect (' equal ')

for tick in ax.get_xticklabels():
    tick.set_fontname("Times New Roman")
for tick in ax.get_yticklabels():
    tick.set_fontname("Times New Roman")
# #设置坐标轴刻度

# #设置坐标轴跨度
plt.tight_layout()
plt.savefig('.jpg')

4.1 运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode刷题 --- 栈

栈(stack)是一种用于存储数据的简单数据结构。栈一个有序线性表,只能在表的一端(PS:栈顶)执行插人和删除操作。最后插人的元素将被第一个删除。所以,栈也称为后进先出(Last In First…

AI在狂飙,ChatGPT-4可直接在iPhone上使用啦

今天凌晨,OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app,瞬间冲上苹果商店免费榜第二名,效率榜第一名。 于是兴致勃勃的去下载体验了一番。整体不错,以后手机使用官方的 ChatGPT 更方便啦!而且使用 GPT4 不再麻…

JavaScript事件流

一、事件流和它的两个阶段 1.事件流:是事件完整执行过程中的流动路径 2.说明:假设页面里有个div,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段 (1)捕获:从父到子 &#…

测试工程师都是怎么写测试用例的?​

很多人不知道写测试用例有什么用,而仅仅是像工具人一样,在每次提测之前,把测试用例照着需求文档抄一遍,仿佛像是走个过场。 开发提测之后,就照着测试用例点点点,可能一天就走完用例了,开发代码…

最优化理论-线性规划中的大M法的步骤

目录: 一、引言 二、线性规划的基本概念 三、最优化理论中的大M法 1. 大M法的基本思想 2. 大M法的步骤 3. 大M法的优缺点 四、大M法的应用 1. 生产计划问题 2. 运输问题 3. 投资问题 五、总结 一、引言 最优化理论是数学中的一个重要分支…

【2023/05/19】NFA

Hello!大家好,我是霜淮子,2023倒计时第14天。 非确定有限状态自动机(NFA)是一种模拟复杂系统行为的数学模型 目录 一、基本概念和理论 二、优点和缺点 三、应用场景 四、问题和挑战 五、重要性、作用和使用价值 …

学习HCIP的day.07

目录 7、SPF算法 --- OSPF防环机制 OSPF区域间防环 OSPF域外防环 基于以上长篇理论总结: 7、SPF算法 --- OSPF防环机制 (1)在同一个区域每台路由具有一致的LSDB (2)每台路由器以自己为根计算到达每个目标的最短路…

Java泛型,数组和方法返回类型 - 协变,逆变和不变

首先,让我们通常理解一下子类型规则是什么。 协变vs逆变vs双变vs不变 编程语言可能有支持以下子类型规则的特性: 协变 允许用超类型替换子类型。 逆变 允许用子类型替换超类型。 双变 同时是协变和逆变。 不变 不允许上述任何替换。 让我们看看Java支持哪…

Intellij IDEA 如何删掉插件

在 Intellij IDEA 的配置中,找到插件选项。 在插件选项中,选择需要删除的插件,然后在右侧的对话框中选择 uninstall 就可以了。 卸载以后,可能不会要求重启,为了安全起见,还是重启下你的 IDE 吧。

C++容器详解

什么是容器 首先,我们必须理解一下什么是容器,在C 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对…

Flutter控件之文本Text封装

Flutter控件之基类Widget封装 上篇文章,我们简单针对Widget做了一个基类封装,拓展出了很多常见又易用的属性,比如宽高,内外边距等等,很方便的为接下来的各个基础组件的封装,提供极大的便利,在上…

虚拟机启动时出现“已启用侧通道缓解”的解决方法

系列文章目录 Hypervisor launch failed centos7配置ssh免密登陆完成,进行ssh登陆时出现”代理承认未能使用密钥签名“ 解决pip更新的代码 文章目录 系列文章目录 一、问题描述 二、启用了侧通道缓解的虚拟机可能会出现性能下降 (79832&#xff0…

Linux系统vim查看文件中文乱码

Linux系统查看文件-cat中文正常显示 vim中文乱码 1、背景2、环境3、目的4、原因5、操作步骤5.1、修改vim编码配置 6、验证 1、背景 服务器部署业务过程中查看文件内容,使用cat 命令查看中文正常显示,使用vim命令查看显示中文乱码 cat 查看 vim 查看 …

陶哲轩宣布主持白宫生成式AI工作组,李飞飞、Hassabis发表演讲

来源 | 新智源 ID | AI-era 【导读】最近,「数学天才」陶哲轩表示,自己将领导白宫生成式人工智能工作组,就当前AI评估并收集意见。在陶哲轩看来,加入工作流的ChatGPT在数学专业领域中,并没有太多增值。 近来&#xf…

Redis主从复制、哨兵、cluster集群原理+实验

Redis 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务…

Fluent局部坐标系(曲线坐标系)

1 概述 在某些模型中,利用局部坐标系可极大的方便模型设置,例如对弯曲的多孔板设置多孔介质属性、设置各向异性的材料属性等。 2 创建坐标系 通过树状菜单中“curvilinear coordinate system”可创建曲线型局部坐标系。 右键点击“新建”,在如…

Linux 安装redis

一、概述 官网:https://redis.io/ Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘…

基于静态和动态特征融合的语音情感识别层次网络

题目Hierarchical Network based on the Fusion of Static and Dynamic Features for Speech Emotion Recognition时间2021年期刊\会议ICASSP 基于静态和动态特征融合的语音情感识别层次网络 摘要:许多关于自动语音情感识别(SER)的研究都致…

【集群划分】基于kmeans的电压调节的集群划分【IEEE33节点】

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

HTTP/HTTPS协议详解

目录 一. HTTP详解 ✅1.1 概念 ✅1.2 HTTP的协议格式 1.2.1 HTTP请求体格式: 1.2.2 HTTP响应体格式: ✅1.3 HTTP请求方法 ✅1.4 认识请求报头 ✅1.5 HTTP请求过程 ✅1.6 认识状态码 二. HTTPS详解 ✅2.1 HTTPS简介 ✅2.2 HTTPS加密过程 TCP/UDP是位于传…