Python数据分析课--第七节 Matplotlib---扇形图 箱型图 雷达图

2023-10-20 09:50

本文主要是介绍Python数据分析课--第七节 Matplotlib---扇形图 箱型图 雷达图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

扇形图介绍

扇形图,用整个圆表示总数,用圆内各个扇形的大小表示各部分数量占总数的百分数。

扇形图绘制

扇形图通过pie()函数绘制
• plt.pie(x, explode=None, labels=None)
• x 扇形数据
• explode 设置某几个分块是否要分离饼图
• labels 每块扇形标签
• autopct 百分比数据标签
• shadow 是否显示阴影
• plt.pie()有3个返回值
• patches 绘制饼图每一块的对象
• texts 文本的列表
• autotexts 百分比的文本列表

练习

将以下frac数据绘制扇形图,并且设置其扇形标签为label
frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50]
label = [’[3,4]’,’(4,5]’,’(5,6]’,’(6,7]’,’(7,8]’,’(8,9]’,’(9,10]’]

# 将以下frac数据绘制扇形图,并且设置其扇形标签为label
# frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50]
# label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)plt.figure(figsize=(6,6),dpi=300)frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']#设置要分离的元素
explodes = (0,0,0.1,0,0,0,0)# 获取 元组拆包
patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",explode=explodes)  # .2f是要保留两位小数  %转义 shadow=True-效果不好# print(patches) # [<matplotlib.patches.Wedge object at 0x000002013F82D828>, <matplotlib.patches.Wedge object at 0x000002013F82DF28>, <matplotlib.patches.Wedge object at 0x000002013F83F668>, <matplotlib.patches.Wedge object at 0x000002013F83FD68>, <matplotlib.patches.Wedge object at 0x000002013F8484A8>, <matplotlib.patches.Wedge object at 0x000002013F848BA8>, <matplotlib.patches.Wedge object at 0x000002013FB242E8>]
# print(texts)  # [Text(1.09783,0.0690696,'[3,4]'), Text(0.963937,0.529929,'(4,5]'), Text(2.8088e-08,1.2,'(5,6]'), Text(-1.09783,-0.0690696,'(6,7]'), Text(7.72421e-08,-1.1,'(7,8]'), Text(0.889919,-0.646564,'(8,9]'), Text(1.09133,-0.137866,'(9,10]')]
# print(autotexts)  # [Text(0.598816,0.0376743,'2.00%'), Text(0.525784,0.289052,'12.00%'), Text(1.63847e-08,0.7,'22.00%'), Text(-0.598816,-0.0376743,'30.00%'), Text(4.2132e-08,-0.6,'18.00%'), Text(0.48541,-0.352671,'12.00%'), Text(0.595269,-0.0751999,'4.00%')]# 设置百分比数值 字体为白色 需要在列表里取出元素
for autotext in autotexts:autotext.set_color('w')plt.show()

在这里插入图片描述

箱型图

箱型图介绍

箱线图是一种直观简洁的方式去呈现一组数据的分布。 箱线图广泛用于各个数据分析领域,它能非常简单明了地显示一组数据中5个重要数值,并且还能发现一组数据中的存在的异常值。
• 最大值
• 最小值
• 中位数
• 下四分位数(Q1)
• 上四分位数(Q3)
在这里插入图片描述

# 随机生成1-100个数据import random
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)data = [random.randint(1,100) for i in range(100)]
# print(min(data))# 添加异常值 -100,500 把列表扩展
data.extend([-100,500])   # append是添加元素,extend是扩展列表
# print(data)# 均值大于中位数的话--->说明整天数据偏大
plt.boxplot(data,sym="^",widths=0.2,meanline=True,showmeans=True)
plt.show()

在这里插入图片描述

箱型图绘制

Python当中可以使用Matplotlib当中的boxplot()绘制箱型图,绘制效果如下。
在这里插入图片描述
plt.boxplot()
• x:需要绘制的箱型图的数据
• notch:是否展示置信区间 默认为False
• sym:代表异常点的符号表示 默认为圆点
• vert:是否是垂直的 默认是True
• whis:上下限系数 默认为1.5
• positions:设置每个盒子的位置
• widths:设置每个盒子的宽度
• labels:每个盒子的label
• meanline和showmean:都为True的时候 会展示平均线

import numpy as np
import pandas as pd
from matplotlib import pyplot as pltdata = np.random.randint(1,100,size=100)
data = np.append(data,np.array([-100,300]))   # 添加两个异常值
plt.boxplot(data,sym="^",widths=0.2,meanline=True,showmeans=True)
plt.show()

雷达图介绍

雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况。比如某个企业在哪些业务方面的投入等,都可以用雷达图方便的表示。

绘制雷达图

在matplotlib.pyplot中,可以通过plt.polar来绘制雷达图,这个方法的参数跟plt.plot非常的类似,只不过是x轴的坐标点应该为弧度(2*PI=360°)。

import numpy as npquaters = ['Q1','Q2','Q3','Q4']   
sales = [40,91,44,90,40]
theta = np.linspace(0,np.pi*2,5) 
plt.polar(theta,sales)         
plt.xticks(theta,quaters,fontproperties=font)
plt.fill(theta,sales) 
from matplotlib import pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)quaters = ['Q1','Q2','Q3','Q4']  # 不是x,x是弧度
sales = [40,91,44,90,40]  # 最后这个40需要添加,如果不添加,首尾不能链接#求theta 2*PI
theta = np.linspace(0,np.pi*2,5)  # 创建等差数列 [0.         1.57079633 3.14159265 4.71238898 6.28318531]
# print(theta)# 绘制
plt.polar(theta,sales)# 设置刻度标签
plt.xticks(theta,quaters)
plt.fill(theta,sales)
plt.show()

报错

ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of ticklabels (4).
然后改了代码就好了

from matplotlib import pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)quaters = ['Q1','Q2','Q3','Q4','Q1']  # 不是x,x是弧度
sales = [40,91,44,90,40]  # 最后这个40需要添加,如果不添加,首尾不能链接#求theta 2*PI
theta = np.linspace(0,np.pi*2,5)  # 创建等差数列 [0.         1.57079633 3.14159265 4.71238898 6.28318531]
# print(theta)# 绘制
plt.polar(theta,sales)# 设置刻度标签
plt.xticks(theta,quaters)
plt.fill(theta,sales)
plt.show()

注意:
• 因为polar并不会完成线条的闭合绘制,所以我们在绘制的时候需要在theta中和values中在最后多重复添加第0个位置的值,然后在绘制的时候就可以和第1个点进行闭合了。
• polar只是绘制线条,所以如果想要把里面进行颜色填充,那么需要调用fill函数来实现。
• polar默认的圆圈的坐标是角度,如果我们想要改成文字显示,那么可以通过xticks来设置。
绘图参考链接:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot

这篇关于Python数据分析课--第七节 Matplotlib---扇形图 箱型图 雷达图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/MiStonebridge/article/details/111413760
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/246334

相关文章

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.