Python绘图-9饼图(下)

9.6饼图添加阴影

9.6.1图像呈现

9.6.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
import matplotlib.patheffects as path_effects # 导入matplotlib的路径效果模块,用于为图形添加特殊效果
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'# 定义标签,这些标签将用于饼图的每个部分
sizes = [15, 30, 45, 10]# 定义每个饼图部分的大小
explode = (0, 0.05, 0, 0)# 定义每个饼图部分的爆炸效果,即部分从中心突出的程度
plt.figure(figsize=(7, 7), dpi=120, facecolor='w')# 创建一个新的图形,设置其大小为7x7英寸,DPI为120,背景颜色为白色
# 绘制饼图
# autopct参数用于显示每个部分的百分比
# textprops参数设置文本属性,这里设置文本颜色为白色
# explode参数设置每个部分的爆炸效果
# startangle参数设置饼图的起始角度
# shadow参数为饼图添加阴影效果
patches, texts, autotexts = plt.pie(sizes,autopct='%1.1f%%',textprops={'color': "w"},explode=explode,startangle=90,shadow=True)
# 遍历每个饼图部分,为其添加路径效果
# 这里为每个部分添加了白色的描边效果
for patch in patches:patch.set_path_effects([path_effects.Stroke(linewidth=2.5, foreground='w')])
# 添加图例,设置图例的位置和标题
plt.legend(labels, bbox_to_anchor=(1., .95), title="Labels Name")
# 显示图形  
plt.show()

9.7饼图之默认甜甜圈

9.7.1图像呈现

9.7.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
# 设定饼图的每个扇区的厚度
size = 0.3
# 创建一个二维数组vals,其中包含三个元素,每个元素代表饼图中一个扇区的值
vals = np.array([[60.], [37.], [29.]])
# 获取一个colormap,这里选择了"tab20c",这是一个颜色映射,用于在绘图时选择颜色
cmap = plt.get_cmap("tab20c") #设置colormap
# 使用colormap为外层饼图扇区选择颜色
# np.arange(3)生成一个数组[0, 1, 2],然后乘以4,用于在colormap中选择颜色
outer_colors = cmap(np.arange(3) * 4)
# 使用colormap为内层饼图扇区选择颜色
# 这里选择了一些特定的颜色索引
inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))
# 创建一个新的图形,并设定其大小为10x10英寸
plt.figure(figsize=(10, 10))
# 绘制饼图
# vals.sum(axis=1)计算vals数组中每行的和,即每个扇区的总值
# radius=1设置饼图的半径为1
# colors=outer_colors设置外层饼图扇区的颜色
# wedgeprops是一个字典,用于设置饼图扇区的属性
# width=size设置每个扇区的厚度为0.3
# edgecolor='r'设置每个扇区的边缘颜色为红色
plt.pie(vals.sum(axis=1),radius=1,colors=outer_colors,wedgeprops=dict(width=size, edgecolor='r'))
# 显示图形 
plt.show()

9.7.3注意

需要注意的是,虽然代码中定义了inner_colors,但在这段代码中并没有使用它来设置内层饼图扇区的颜色。如果你想绘制一个嵌套饼图(即一个饼图内部还有另一个饼图),你需要使用其他方法或库来实现,因为matplotlibpie函数本身并不直接支持嵌套饼图。

9.8饼图之不同内径甜甜圈图

9.8.1图像呈现

9.8.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
# 创建一个二维数组vals,其中包含三个元素,每个元素代表饼图中一个扇区的值
vals = np.array([[60.], [37.], [29.]])
# 获取一个名为"tab20c"的colormap
cmap = plt.get_cmap("tab20c")
# 使用colormap为饼图扇区选择颜色
# np.arange(3)生成一个数组[0, 1, 2],然后乘以4,用于在colormap中选择颜色
outer_colors = cmap(np.arange(3) * 4)
# 创建一个新的图形,并设置其大小为10x10英寸
plt.figure(figsize=(10,10))
# 创建一个1x2的子图网格,并选择第一个子图进行绘图
plt.subplot(121)
# 绘制饼图
# vals.sum(axis=1)计算vals数组中每行的和,即每个扇区的总值
# radius=1设置饼图的半径为1
# colors=outer_colors设置饼图扇区的颜色
# wedgeprops是一个字典,用于设置饼图扇区的属性
# width=.3设置每个扇区的厚度为0.3
# edgecolor='w'设置每个扇区的边缘颜色为白色
plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors,wedgeprops=dict(width=.3, edgecolor='w'))
# 为第一个子图设置标题'Size = 0.3'
plt.title('Size = 0.3')
# 选择第二个子图进行绘图
plt.subplot(122)
# 再次绘制饼图,但这次扇区的厚度为0.5
plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors,wedgeprops=dict(width=.5, edgecolor='w'))
# 为第二个子图设置标题'Size = 0.5'
plt.title('Size = 0.5')
# 显示图形  
plt.show()

9.8.3注意

这段代码创建了一个包含两个子图的图形。每个子图上都绘制了一个饼图,但扇区的厚度(即扇区与扇区之间的间距)在两个饼图中是不同的。第一个饼图的扇区厚度为0.3,而第二个饼图的扇区厚度为0.5。这样做可以直观地比较不同厚度的扇区对饼图外观的影响。同时,两个饼图都使用了相同的颜色映射和颜色设置。

9.9饼图之多甜甜圈图

9.9.1图像呈现 

9.9.2绘图代码

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
# 创建一个新的图形,并设置其大小为10x10英寸
plt.figure(figsize=(10, 10))
# 设定饼图扇区的厚度
size = 0.3
# 创建一个二维数组vals,其中包含六个值,这些值将用于绘制两个嵌套的饼图
# 第一个饼图将使用每行的和作为扇区大小,第二个饼图将使用每个元素作为扇区大小
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
# 获取一个名为"tab20c"的colormap
cmap = plt.get_cmap("tab20c")
# 使用colormap为外层饼图扇区选择颜色
# np.arange(3)生成一个数组[0, 1, 2],然后乘以4,用于在colormap中选择颜色
outer_colors = cmap(np.arange(3) * 4)
# 使用colormap为内层饼图扇区选择颜色
# 这里选择了一些特定的颜色索引
inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))
# 绘制外层饼图
# vals.sum(axis=1)计算vals数组中每行的和,即每个扇区的总值
# radius=1设置外层饼图的半径为1
# colors=outer_colors设置外层饼图扇区的颜色
# wedgeprops是一个字典,用于设置饼图扇区的属性
# width=size设置每个扇区的厚度为0.3
# edgecolor='w'设置每个扇区的边缘颜色为白色
plt.pie(vals.sum(axis=1),radius=1,colors=outer_colors,wedgeprops=dict(width=size, edgecolor='w'))
# 绘制内层饼图
# vals.flatten()将vals数组展平为一维数组,即使用每个元素作为扇区大小
# radius=1 - size设置内层饼图的半径稍微小于外层饼图,以创建嵌套效果
# colors=inner_colors设置内层饼图扇区的颜色
# wedgeprops同样设置扇区的宽度和边缘颜色  
plt.pie(vals.flatten(),radius=1 - size,colors=inner_colors,wedgeprops=dict(width=size, edgecolor='w'))plt.show()

9.9.3注意

这段代码的目的是创建一个包含两个嵌套饼图的图形。外层饼图使用vals数组每行的和作为扇区大小,而内层饼图使用vals数组中的每个元素作为扇区大小。两个饼图都使用了tab20c colormap来选择颜色,并且扇区的边缘颜色被设置为白色。内层饼图的半径略小于外层饼图,以创建嵌套效果。

9.10饼图之更个性化甜甜圈图

9.10.1图像呈现

9.10.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
plt.rcParams['font.sans-serif'] = ['SimHei']  # 运行配置参数中的字体(font)为黑体(simHei)
fig, ax = plt.subplots(figsize=(10, 4.5),dpi=120,subplot_kw=dict(aspect="equal"))# 创建一个新的图形窗口,并设置其大小、分辨率和子图的属性
# 定义饼图的数据标签
recipe = ["类型1", "类型2", "类型3", "类型4", "类型5","类型6"]
# 定义饼图的数据值
data = [225, 90, 50, 60, 100, 5]
# 绘制饼图,设置扇区的宽度为0.5,起始角度为-40度
wedges, texts = ax.pie(data, wedgeprops=dict(width=0.5), startangle=-40)
# 定义一个字典,用于设置个性化文本箱子的样式
bbox_props = dict(boxstyle="square,pad=0.3", fc="g", ec="k", lw=0.72) #个性化文本箱子
# 定义一个字典,用于设置饼图扇区上标签的样式和位置
kw = dict(arrowprops=dict(arrowstyle="-"),bbox=bbox_props,zorder=0,va="center")
# 遍历每个饼图扇区
for i, p in enumerate(wedges):ang = (p.theta2 - p.theta1) / 2. + p.theta1 # 计算扇区的中心角度# 根据中心角度计算扇区中心点的x和y坐标y = np.sin(np.deg2rad(ang))x = np.cos(np.deg2rad(ang))horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]# 根据x的正负值确定文本的水平对齐方式connectionstyle = "angle,angleA=0,angleB={}".format(ang)# 设置连接文本的样式,使其从扇区的中心指向标签的位置kw["arrowprops"].update({"connectionstyle": connectionstyle})# 更新箭头连接的样式# 在饼图扇区的中心位置添加标签,标签的文本为recipe列表中的对应项ax.annotate( recipe[i],xy=(x, y),xytext=(1.35 * np.sign(x), 1.4 * y),horizontalalignment=horizontalalignment,**kw)
ax.set_title("个性甜甜圈")# 设置图形的标题  plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实际中的Stream流的用法

实际中的Stream流的用法 不同对象怎么生成stream流对象 package stream;/*** @author 刘诗良* @version 1.0* @Description*/ import java.util.*; import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {//Collection体系的集合…

springBoot-SpringBoot自定义starter

在一个空Maven项目中,新增xxxx-spring-boot-starter和xxxx-spring-boot-autoconfigure两个模块,xxxx是你这个starter是做什么的,模块xxxx-spring-boot-starter主要是作依赖管理,外界使用我们自定义的starter只需要导入我们xxxx-sp…

记 Hyperf booted模型事件的使用

前因 产品经理提了一个需求,要求能自定义内容的创建时间,当前事件大于创建时间时,才能查询到这些内容,并对内容进行操作 我的第一反应:不算麻烦,只需要在仓储层的查询方法中,给每个查询都多加…

Golang Copy()方法学习

前言 主要是涉及到深浅拷贝相关的,但是在看的一个资料过程中发现他有错…并且一系列,复制粘贴他的,也都错了。 错误文章指路 很显然,Copy是深拷贝啊!!! Copy功能 copy的代码很少&#xff0c…

9.WEB渗透测试-Linux基础知识-Linux用户权限管理(上)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:8.WEB渗透测试-Linux基础知识-Linux基础操作(二)-CSDN博客 用户管…

如何在jupyter notebook 中下载第三方库

在anconda 中找到: Anaconda Prompt 进入页面后的样式: 在黑色框中输入: 下载第三方库的命令 第三方库: 三种输入方式 标准保证正确 pip instsall 包名 -i 镜像源地址 pip install pip 是 Python 包管理工具,…

【笔记】【电子科大 离散数学】 3.谓词逻辑

谓词引入 因为含变量的语句(例如x > 3)不是命题,无法进行逻辑推理。 为了研究简单命题句子内部的逻辑关系,我们需要对简单命题进行分解,利用个体词,谓词和量词来描述它们,并研究个体与总体…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO(输入模式)寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器(输入模式相关) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

通过联合部署DDoS高防和WAF提升网站防护能力

如果您的网站遭受的攻击既有流量型攻击,又混杂精巧的Web应用层攻击时(例如SQL注入、跨站脚本攻击、命令注入等)时,推荐您组合使用阿里云DDoS高防和Web 应用防火墙 WAF(Web Application Firewall)&#xff0…

NumpyPython 笔记2 3.5

如果不是矩阵的话,也可以用索引 矩阵也可以 np.vstack 上下合并两个数组 np.hstack 左右合并两个数组 没看懂 np.array 可以合并三个 np.concatenate 可以在后面axis定制是在行还是列上进行合并 np.split(A,2,axis1):对哪个东西,分成多少块&#…

Linux安全加固功能

提示:工具下载链接在文章最后 目录 一.加固功能介绍二.配置加固功能1.配置安全加固功能1.1 开放目前设备监听的所有端口1.2 只开放80、443、20、21、22端口1.3 防火墙配置工具1.3.1 开放允许访问的端口1.3.2 删除允许访问的端口1.3.3 添加IP地址允许访问规则1.3.4 添加IP地址禁…

数据库设计革命:逻辑模型的演变与面向对象的突破

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…