matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图

news/2024/5/18 22:06:28/文章来源:https://blog.csdn.net/qq_54423921/article/details/127136886

matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图

  • 一.直方图
    • 用10000个正态分布随机数画直方图
  • 二.绘制饼图或者圆环图
    • 圆环图
    • 根据消费支出画圆环图
  • 三.绘制散点图或气泡图
    • 使用scatter()函数绘制一个散点图,代码如下
    • 气泡图
    • 汽车速度与制动距离的关系
  • 四.绘制箱型图
    • 实例:2017 年和 2018 年全国发电量统计
  • 四.使用polar函数绘制雷达图
    • 实例分析:霍兰德职业兴趣测试

更多文章:

matplotlib的参数配置:http://t.csdn.cn/TiI79

Matplotlib绘制折线图,条形图,柱状图,面积图http://t.csdn.cn/LMO2I

一.直方图

使用 pyplot 的 hist() 函数可以快速绘制直方图,hist() 函数的语法格式如下所示:

hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, label=None, stacked=False, normed=None, *,data=None, **kwargs) 

该函数常用参数的含义如下

  • x :表示 x 轴的数据,可以为单个数组或多个数组的序列。
  • bins :表示矩形条的个数,默认为 10。
  • range :表示数据的范围。若没有提供 range 参数的值,则数据范围为 (x.min(), x.max())
  • cumulative :表示是否计算累计频数或频率。
  • histtype :表示直方图的类型,支持 ‘bar’、‘barstacked’、‘step’、‘stepfilled’ 四种取值,其中 ‘bar’ 为默认值,代表传统的直方图 ;‘barstacked’ 代表堆积直方图 ;‘step’ 代表未填充的线条直 方图 ;‘stepfilled’ 代表填充的线条直方图。
  • align :表示矩形条边界的对齐方式,可设置为 ‘left’、‘mid’ 或 ‘right’,默认为 ‘mid’。
  • orientation :表示矩形条的摆放方式,默认为 ‘vertical’,即垂直方向。 ·rwidth :表示矩形条宽度的百分比,默认为 0。若 histtype 的值为 ‘step’ 或 ‘stepfilled’,则 直接忽略 rwidth 参数的值。
  • stacked :表示是否将多个矩形条以堆积形式摆放。

简单示例

import numpy as np
import matplotlib.pyplot as plt
# 准备 50 个随机测试数据
scores = np.random.randint(0,100,50)#0到100之间50个随机整数
print(scores)
# 绘制直方图
plt.hist(scores, bins=9, histtype='stepfilled')
plt.show()

image-20221001172117093

用10000个正态分布随机数画直方图

import matplotlib.pyplot as plt
import numpy as np
# 10000 个随机数
random_x = random_state.randn(10000)
# 绘制包含 25 个矩形条的直方图
plt.hist(random_x, bins=25)
plt.show()

image-20221001172429533

二.绘制饼图或者圆环图

使用 pyplot 的 pie() 函数可以快速地绘制饼图或圆环图,pie() 函数的语法格式如下所示 :

pie(x, explode=None, labels=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)

该函数常用参数的含义如下

  • x :表示扇形或楔形的数据。
  • explode :表示扇形或楔形离开圆心的距离。
  • labels :表示扇形或楔形对应的标签文本。
  • autopct :表示控制扇形或楔形的数值显示的字符串,可通过格式字符串指定小数点后 的位数。
  • pctdistance :表示扇形或楔形对应的数值标签距离圆心的比例,默认为 0.6
  • shadow :表示是否显示阴影。
  • labeldistance :表示标签文本的绘制位置(相对于半径的比例),默认为1.1。startangle :表示起始绘制角度,默认从x轴的正方向逆时针绘制。
  • radius :表示扇形或楔形的半径。
  • wedgeprops :表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {‘width’: 0.7}将楔形的宽度设为0.7。
  • textprops :表示控制图表中文本属性的字典。· center :表示图表的中心点位置,默认为(0,0 )。· frame :表示是否显示图框。

示例代码:

import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
# 绘制饼图 : 半径为 1.5, 数值保留 1 位小数
plt.pie(data, radius=1.5, labels=pie_labels, autopct='%3.1f%%')
plt.show()

image-20221001183055676

圆环图

import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
# 绘制圆环图 : 外圆半径为 1.5, 楔形宽度为 0.7
plt.pie(data, radius=1.5, wedgeprops={'width': 0.8}, labels=pie_labels,
autopct='%3.1f%%', pctdistance=0.75)
plt.show()

image-20221001183552183

根据消费支出画圆环图

数据如下:

image-20221001183702733

# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(10,6.5))
x=np.array([800,100,1000,200,300,200,200,200])
dev_pisition=np.full_like(x,0.1,dtype=float)#注意这里后面加上dtype,要不然dtype就取整变成0了
label=["购物",'人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
plt.pie(x,radius=2,labels=label,autopct='%3.1f%%',shadow=True,explode=dev_pisition,startangle=90,textprops={'fontsize': 14})
plt.legend(["购物",'人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他'])
plt.legend(loc='center right')
plt.title('消费明细')
plt.axis('equal')
# 设置饼图内文字大小
plt.show()

image-20221001190403974

三.绘制散点图或气泡图

使用 pyplot 的 scatter() 函数可以快速绘制散点图或气泡图,scatter() 函数的语法格式如下所示 :

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)

该函数常用参数的含义如下。

  • x,y :表示数据点的位置。
  • s :表示数据点的大小。
  • c :表示数据点的颜色。
  • marker :表示数据点的样式,默认为圆形。
  • cmap :表示数据点的颜色映射表,仅当参数c为浮点数组时才使用。·norm :表示数据亮度,可以取值为0 ~~ 1。
  • vmin,vmax :表示亮度的最小值和最大值。若传入了norm参数,则忽略vmin和vmax参数。
  • alpha :表示透明度,可以取值为0 ~~ 1。- linewidths :表示数据点边缘的宽度。·edgecolors :表示数据点边缘的颜色。

使用scatter()函数绘制一个散点图,代码如下

num = 50
x = np.random.rand(num)#50个均匀正态分布的样本值
y = np.random.rand(num)
plt.scatter(x, y,color='m')

image-20221001192521885

气泡图

num = 50
x = np.random.rand(num)
y = np.random.rand(num)
area = (30 * np.random.rand(num))**2
plt.scatter(x, y, s=area,color="m")

image-20221001193302159

汽车速度与制动距离的关系

​ 汽车的制动距离主要取决于车速。若车速增加 1 倍,则汽车的制动距离将增大至近 4 倍。 某汽车生产公司对一批丰田汽车进行抽样测试,并分别记录了不同的车速对应的制动距离, 具体如下表所示。

image-20221001193350868

代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3, 
17.7, 24.1, 31.5, 39.9, 49.2,
59.5, 70.8, 83.1, 96.4, 110.7,
126.0, 142.2, 159.4, 177.6, 196.8])
# 绘制散点图
plt.scatter(x_speed, y_distance, s=50, alpha=0.9,color="m")
plt.xlabel("车速")
plt.ylabel("制动距离")
plt.grid()
plt.show()

image-20221001193638806

四.绘制箱型图

使用 pyplot 的 boxplot() 函数可以快速绘制箱形图,boxplot() 函数的语法格式如下所示

boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None)

image-20221001193830453

示例代码:

import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(100)
# 绘制箱形图 : 显示中位数的线条, 箱体宽度为 0.3, 填充箱体颜色, 不显示异常值
plt.boxplot(data, meanline=True, widths=0.3, patch_artist=True, showfliers=False)
plt.show()

image-20221001194002752

实例:2017 年和 2018 年全国发电量统计

image-20221001194054648

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
data_2018 = np.array([5200, 5254.5, 5283.4, 5107.8, 5443.3, 5550.6, 
6400.2, 6404.9, 5483.1, 5330.2, 5543, 6199.9])
data_2017 = np.array([4605.2, 4710.3, 5168.9, 4767.2, 4947, 5203, 6047.4, 5945.5, 5219.6, 5038.1, 5196.3, 5698.6])
# 绘制箱形图
plt.boxplot([data_2018, data_2017], labels=('2018 年 ', '2017 年 '),
meanline=True, widths=0.5, vert=True, patch_artist=True)
plt.show()

image-20221001194243099

四.使用polar函数绘制雷达图

使用 pyplot 的 polar() 函数可以快速绘制雷达图,polar() 函数的语法格式如下所示

polar(theta, r, **kwargs)
  • theta :表示每个数据点所在射线与极径的夹角。

  • r :表示每个数据点到原点的距离。

实例分析:霍兰德职业兴趣测试

霍兰德职业兴趣测试是美国职业指导专家霍兰德根据他本人大量的职业咨询经验及其职业 类型理论编制的测评工具。根据个人兴趣的不同,霍兰德将人格分为研究型(I)、艺术型(A)、 社会型(S)、企业型(E)、传统型(C)和现实型(R)6 个维度,每个人的性格都是这 6 个维 度不同程度的组合。假设现在 6 名用户分别进行了测试,得出的测试结果如下表所示:

image-20221001194524680

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
dim_num = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
[0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
[0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
[0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
[0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
[0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])
angles = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
data = np.concatenate((data, [data[0]]))
# 维度标签
radar_labels = [' 研究型 (I)', ' 艺术型 (A)', ' 社会型 (S)', 
'企业型 (E)', ' 传统型 (C)', ' 现实型 (R)']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
# 绘制雷达图
plt.polar(angles, data)
# 设置极坐标的标签
plt.thetagrids(angles * 180/np.pi, labels=radar_labels)
# 填充多边形
plt.fill(angles, data, alpha=0.25)
plt.show()

在这里插入图片描述

参考链接:Matplotlib — Visualization with Python
参考书籍:Python数据可视化%20(黑马程序员)

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

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

相关文章

【进制计算】 2 ~ N 进制计算

目录 规则 图解十、二、八、十六进制之间的转换 举例 除法计算出3进制: 乘法次方逆向计算原数: 图解二进制加减乘除计算 规则 十进制 除以 进制数 取余法:(1)被除数 除以 除数 等于 商 并取得余数,&am…

SSM进阶-Duubo入门demo整合MyBatis

搭建入门demo 搭建SpringSpringMVCDubbo入门demo 准备数据 数据库创建demo表 create table demo (id bigint auto_increment primary key,name varchar(255) null,description text null ); 插入数据 INSERT INTO demo(id, name, description) VAL…

数据库基础,看完这篇就够了!

转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/747a74ea.html你好,我是测试蔡坨坨。 对于测试同学来说,除了知道测试基础知识外,还需要掌握一些测试基本技能,主要有Linux、数据库、计算机网络等,在此之前我们已经讨论过Linux基础知识以及在实际工作中的应…

神经网络模型训练简记(一)

神经网络模型训练简记(一)一、概念介绍1.1人工智能、机器学习、神经网络与深度学习1.2backbone与pretrain_model1.3batch_size、learning_rate、epoch与iteration1.4模型评价指标二、官方数据集简介2.1ImageNet数据集2.2 ILSVRC竞赛2.3 MS COCO数据集2.4…

【专栏】RPC系列(实战)-低配版NameServer

公众号【离心计划】,一起离开地球表面 【RPC系列合集】 【专栏】RPC系列(理论)-夜的第一章 【专栏】RPC系列(理论)-协议与序列化 【专栏】RPC系列(理论)-动态代理 【专栏】RPC系列(实战&am…

读书笔记:软件工程(4) - 软件过程模型:瀑布模型

软件过程模型 为了改变软件开发的混乱状况,使软件开发更加有序。 瀑布模型 又称为经典生命周期,它提出了一个系统的,顺序的软件开发方法,从用户需求规格说明开始,通过策划,建模,构建和部署的…

Easyx基本使用(三)

Easyx基本使用&#xff08;三&#xff09; ——绘制简单图形 1. 绘制点&#xff08;putpixel&#xff09; void putpixel(int x,int y,COLORREF color );x&#xff1a;点的x坐标y&#xff1a;点的y坐标color&#xff1a;点的颜色返回值&#xff1a;无 #include <easyx.h…

程序员的数学课15 递归:如何计算汉诺塔问题的移动步数?

递归是重要的程序开发思想&#xff0c;比如程序源代码缩进、树形数据结构、XML 语法、快速排序法等都有递归的影子。 那么&#xff0c;递归思维的本质到底是什么呢&#xff1f;递归的理念看似隐讳&#xff0c;实则非常清晰明了。 为了让你由浅入深地理解它&#xff0c;这一讲…

paddle 训练模型的保持和载入

模型保持中的常见问题 &#xff0c;查看官网 模型保存常见问题-使用文档-PaddlePaddle深度学习平台 一、保存载入体系简介 模型保存与载入 一、保存载入体系简介 1.1 基础API保存载入体系 飞桨框架2.1对模型与参数的保存与载入相关接口进行了梳理&#xff1a;对于训练调优场景…

2023秋招nlp笔试题-太初

单选题 浮点数的表示范围和精度取决于 浮点数的取值范围由阶码的位数决定,而浮点数的精度由尾数的位数决定 响应中断请求的条件是 A.外设提出中断; B.外设工作完成和系统允许时; C.外设工作完成和中断标记触发器为“1”时; D.CPU提出中断。 计算器浮点运算速度为85.0167PF…

Day30_路由的props配置

提出问题&#xff1a; Detail是如何得到别传给他的参数&#xff0c;以及如何简化写法。 第一种写法的props 对象式 使用的很少&#xff0c;传递的是死数据 1.index.js组件里面 2.在detail组件里面 3效果图&#xff1a; 第二种写法props 布尔值 仅限于params参数传递…

心理学考研难度 分析

全国招收心理学院校排名 高等教育评价专业机构软科发布了“2020软科中国最好学科排名”&#xff0c;心理学院校有55所上榜&#xff0c;排名前10%依次为北京师范大学、北京大学、华南师范大学、西南大学、华东师范大学、华中师范大学、上海交通大学、浙江大学、陕西师范大学、上…

内存对齐对性能的影响

计算字节数 在 Go 语言中&#xff0c;可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数。 package mainimport ("fmt""unsafe" )type Args struct {num1 intnum2 int }type Flag struct {num1 int16num2 int32 }func main() {fmt.Println…

浅析axios原理与使用(包括axios的优雅写法与res的解构赋值)

目录前言一&#xff0c;什么是axios二&#xff0c;axios的基本使用2.1 不含参的axios调用2.2 含参数的axios调用三&#xff0c;axios的原理&#xff08;拦截器&#xff09;3.1 客户端与服务器之间的交互原理&#xff08;复习可略过&#xff09;3.2 浅析axios原理四&#xff0c;…

西瓜书研读——第三章 线性模型: 线性判别分析 LDA

西瓜书研读系列&#xff1a; 西瓜书研读——第三章 线性模型&#xff1a;一元线性回归 西瓜书研读——第三章 线性模型&#xff1a;多元线性回归 西瓜书研读——第三章 线性模型&#xff1a;线性几率回归&#xff08;逻辑回归&#xff09; 主要教材为西瓜书&#xff0c;结合…

K8s存储与GlusterFS实战

一、存储概述 1、共享存储机制概述 Kubernetes对于有状态的容器应用或者对数据需要持久化的应用&#xff0c;不仅需要将容器内的目录挂载到宿主机的目录或者emptyDir临时存储卷&#xff0c;而且需要更加可靠的存储来保存应用产生的重要数据&#xff0c;以便容器应用在重建之后…

常见的垃圾回收机制

如何工作在某些 Java 虚拟机中,堆的实现截然不同:它更像一个传送带,每分配一个新对象,它就向前移动一格。 这意味着对象存储空间的分配速度特别快。Java 的"堆指针"只是简单地移动到尚未分配的区域,所以它的效率与 C++ 在栈上分配空间的效率相当垃圾回收器工作时…

将Springbooot项目部署到云服务器上运行

将Springbooot项目部署到云服务器上运行一、项目打包二、将结果jar文件上传服务器三、授予jar文件权限&#xff0c;并运行四、运行失败可能原因一、项目打包 File->Project Structure Project Settings -> Artifacts -> 点击 号 -> JAR -> From modules with d…

Linux-常见命令(三)

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接收失败&#xff0c;但我不能接收放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 find指令&…

2022-2023-1 20221318 《计算机基础和程序设计》第五周学习总结

作业信息 这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP 作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03 作业目标 学习《计算机科学概论》的第6章 《程序设计》第4章 作业正文 https://i.cnblogs.com/posts/edit;postId=1673…