当前位置: 首页 > news >正文

使用Python库Matplotlib绘制常用图表类型

使用Python库Matplotlib绘图

  • 一、Matplotlib绘图参数设置
    • 1.1 设置分辨率和画布大小
    • 1.2 保存图片并设置边缘留白为紧凑型
    • 1.3 设置坐标轴标签
    • 1.4 画直线设置线宽和颜色
    • 1.5 画子图
      • 1.5.1 通过figure的add_subplot()画子图
      • 1.5.2 通过plt的subplots画子图
  • 二、使用Matplotlib中scatter()方法画散点图
    • 2.1 散点图添加图例和点标签
    • 2.2 结合sklearn中make_blobs()方法绘制二分类数据
  • 三、箱线图
  • 四、双数轴折线图

一、Matplotlib绘图参数设置

1.1 设置分辨率和画布大小

# 分辨率参数-dpi,画布大小参数-figsize
plt.figure(dpi=300,figsize=(24,8))

1.2 保存图片并设置边缘留白为紧凑型

plt.savefig("accuracy.svg", bbox_inches="tight")

1.3 设置坐标轴标签

plt.xlabel("tree_num")
plt.ylabel("accuracy")

1.4 画直线设置线宽和颜色

plt.plot(accuracy, color="b", linewidth="1.6")

1.5 画子图

1.5.1 通过figure的add_subplot()画子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
fig=plt.figure()
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

1.5.2 通过plt的subplots画子图

fig, ax = plt.subplots(2, 2,figsize=(10,8))
# 画第1个图:折线图
x = np.arange(1, 100)
ax[0][0].plot(x, x * x)
# 画第2个图:散点图
ax[0][1].scatter(np.arange(0, 10), np.random.rand(10))
# 画第3个图:饼图
ax[1][0].pie(x=[15, 30, 45, 10], labels=list('ABCD'), autopct='%.0f', explode=[0, 0.05, 0, 0])
# 画第4个图:条形图
ax[1][1].bar([20, 10, 30, 25, 15], [25, 15, 35, 30, 20], color='b')
plt.show()

二、使用Matplotlib中scatter()方法画散点图

scatter()方法关键参数:

matplotlib.pyplot.scatter(x,  # 散点的坐标y,s=None, # 散点的面积c=None, # 散点的颜色marker=None, # 散点样式,默认值为实心圆,'o'cmap=None, norm=None,vmin=None,vmax=None,alpha=None, # 散点透明度,[0, 1]之间的数,0表示完全透明,1则表示完全不透明linewidths=None, # 散点的边缘线宽verts=None,edgecolors=None, # 散点的边缘颜色hold=None,data=None,**kwargs,
)

2.1 散点图添加图例和点标签

src_in_graph, tgt_in_graph = self.get_valid_source_and_target_list(source_list, target_list)
Xs, Ys = [], []
Xt, Yt = [], []
for s,t in zip(src_in_graph, tgt_in_graph):sx, sy = self.node_dict[s].coordtx, ty = self.node_dict[t].coordXs.append(sx)Ys.append(sy)Xt.append(tx)Yt.append(ty)
plt.scatter(Xs, Ys, c='r', label='source')
for i in range(len(src_in_graph)):plt.text(Xs[i], Ys[i], src_in_graph[i])
plt.scatter(Xt, Yt, c='b', label='target')
for i in range(len(src_in_graph)):plt.text(Xt[i], Yt[i], src_in_graph[i])
plt.legend()
plt.savefig('src-tgt coord.svg', bbox_inches="tight")

2.2 结合sklearn中make_blobs()方法绘制二分类数据

import matplotlib.pyplot as plt
from sklearn import datasetsX, y = datasets.make_blobs(n_samples=150, n_features=2, centers=2, cluster_std=2.05, random_state=47
)
y = np.where(y == 0, 0, 1)  # 将标签转换为0和1
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

三、箱线图

箱线图(Box plot),也称为盒须图,是一种用于显示数据分布的统计图表。它通过显示数据的五个统计量(最小值、第一四分位数、中位数、第三四分位数和最大值)来概括数据的分布情况。箱线图在以下情况下特别有用:

  • 显示数据分布情况:箱线图提供了对数据分布的直观概览,包括数据的集中趋势、分散程度和对称性。
  • 识别异常值:箱线图通过“须”的长度和离群点(异常值)显示数据中的异常值或极端值。
  • 比较不同组的数据:箱线图可以并排显示多个数据集,方便比较不同组的分布情况。

箱线图应用场景:

  • 探索性数据分析(EDA):在数据分析的初始阶段,使用箱线图可以帮助快速了解数据的基本特征。
  • 比较多个数据集:当需要比较多个数据集的分布情况时,箱线图非常有用。例如,比较不同实验组或不同时间段的数据。
  • 检测数据异常值:箱线图可以帮助识别数据中的异常值,进而决定是否需要处理这些异常值。
  • 可视化报告:在报告和展示数据时,箱线图提供了一个简洁、直观的方式来展示数据的分布情况。

在画箱型图过程中,如图像未显示,是因为数据中存在空值。

四、双数轴折线图

相关文章:

  • 新人学习笔记之(JavaScript作用域)
  • BurpSuite2024.5
  • C++——list
  • STM32学习问题总结(1)—CubeMX生成后下载无反应
  • SpringBoot+layui实现Excel导入操作
  • 软件磁盘阵列与LVM
  • 统计信号处理基础 习题解答10-5
  • 知名专业定制线缆知名智造品牌推荐-精工电联:解决水下机器人线缆行业痛点的领航者
  • C++第二十一弹---vector深度剖析及模拟实现(上)
  • 基于标准库的STM32的外部中断EXTI
  • MyBatis延迟加载缓存分页逆向工程
  • 【计算机毕业设计】345大学生心理健康测评管理系统小程序
  • Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)
  • 网络原理-TCP/IP --传输层(UDP)
  • 艾体宝洞察 | Redis Enterprise对比ElastiCache
  • 分享一款快速APP功能测试工具
  • [nginx文档翻译系列] 控制nginx
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Debian下无root权限使用Python访问Oracle
  • Electron入门介绍
  • Java IO学习笔记一
  • JavaScript-Array类型
  • js ES6 求数组的交集,并集,还有差集
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Mocha测试初探
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • node入门
  • PaddlePaddle-GitHub的正确打开姿势
  • swift基础之_对象 实例方法 对象方法。
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 深度学习在携程攻略社区的应用
  • 听说你叫Java(二)–Servlet请求
  • ​【已解决】npm install​卡主不动的情况
  • ​TypeScript都不会用,也敢说会前端?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #Linux(帮助手册)
  • #Z0458. 树的中心2
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax,axios,fetch三种ajax请求的区别
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Matlab)使用竞争神经网络实现数据聚类
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET C# 操作Neo4j图数据库
  • .net core 的缓存方案