Python库()

news2025/3/31 14:04:33

1.概念

Matplotlib 库:是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂

Matplotlib 图形组成:

Figure:指整个图形,您可以把它理解成一张画布,它包括了所有的元素,比如标题、轴线等

Axes:绘制 2D 图像的实际区域,也称为轴域区,或者绘图区

Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小(图中轴长为 7)、轴标签(指 x 轴,y轴)和刻度标签

Artist:您在画布上看到的所有元素都属于 Artist 对象,比如文本对象(title、xlabel、ylabel)、Line2D 对象(用于绘制2D图像)等

Matplotlib 功能扩展包:许多第三方工具包都对 Matplotlib 进行了功能扩展,其中有些安装包需要单独安装,也有一些允许与 Matplotlib 一起安装。常见的工具包如下:

Basemap:这是一个地图绘制工具包,其中包含多个地图投影,海岸线和国界线

Cartopy:这是一个映射库,包含面向对象的映射投影定义,以及任意点、线、面的图像转换能力

Excel tools: 这是 Matplotlib 为了实现与 Microsoft Excel 交换数据而提供的工具

Mplot3d:它用于 3D 绘图

Natgrid:这是 Natgrid 库的接口,用于对间隔数据进行不规则的网格化处理

2.安装

激活或者创建一个环境,安装  pip install matplotlib

3.应用场景

数据可视化主要有以下应用场景:

企业领域:利用直观多样的图表展示数据,从而为企业决策提供支持

股票走势预测:通过对股票涨跌数据的分析,给股民提供更合理化的建议

商超产品销售:对客户群体和所购买产品进行数据分析,促使商超制定更好的销售策略

预测销量:对产品销量的影响因素进行分析,可以预测出产品的销量走势

4.常用API

4.1 绘图类型

函数名称描述
Bar绘制条形图
Barh绘制水平条形图
Boxplot绘制箱型图
Hist绘制直方图
his2d绘制2D直方图
Pie绘制饼状图
Plot在坐标轴上画线或者标记
Polar绘制极坐标图
Scatter绘制x与y的散点图
Stackplot绘制堆叠图
Stem用来绘制二维离散数据绘制(又称为火柴图)
Step绘制阶梯图
Quiver绘制一个二维按箭头

4.2 Image 函数

函数名称描述
Imread从文件中读取图像的数据并形成数组
Imsave将数组另存为图像文件
Imshow在数轴区域内显示图像

4.3 Axis 函数

函数名称描述
Axes在画布(Figure)中添加轴
Text向轴添加文本
Title设置当前轴的标题
Xlabel设置x轴标签
Xlim获取或者设置x轴区间大小
Xscale设置x轴缩放比例
Xticks获取或设置x轴刻标和相应标签
Ylabel设置y轴的标签
Ylim获取或设置y轴的区间大小
Yscale设置y轴的缩放比例
Yticks获取或设置y轴的刻标和相应标签

4.4 Figure 函数

函数名称描述
Figtext在画布上添加文本
Figure创建一个新画布
Show显示数字
Savefig保存当前画布
Close关闭画布窗口

5.pylab 模块

PyLab 是一个面向 Matplotlib 的绘图库接口,其语法和 MATLAB 十分相近。

pylab 是 matplotlib 中的一个模块,它将 matplotlib.pyplot 和 numpy 的功能组合在一起,使得你可以直接使用 numpy 的函数和 matplotlib.pyplot 的绘图功能,而不需要显式地导入 numpy 和 matplotlib.pyplot。

优点

方便快捷:pylab 的设计初衷是为了方便快速绘图和数值计算,使得你可以直接使用 numpy 的函数和 matplotlib.pyplot 的绘图功能,而不需要显式地导入 numpy 和 matplotlib.pyplot。

简化代码:使用 pylab 可以减少导入语句的数量,使代码更简洁。


缺点

命名空间污染:pylab 将 numpy 和 matplotlib.pyplot 的功能组合在一起,可能会导致命名空间污染,使得代码的可读性和可维护性降低。

不适合大型项目:对于大型项目或需要精细控制的项目,pylab 可能不够灵活。

pyplot 是 matplotlib 中的一个模块,提供了类似于 MATLAB 的绘图接口。它是一个更底层的接口,提供了更多的控制和灵活性。


使用 pyplot 需要显式地导入 numpy 和 matplotlib.pyplot,代码量相对较多。例如:

import matplotlib.pyplot as plt
import numpy as np

6.常用函数

6.1 plot 函数

pylab.plot 是一个用于绘制二维图形的函数。它可以根据提供的 x 和 y 数据点绘制线条和/或标记。

语法

pylab.plot(x, y, format_string=None, **kwargs)

参数

x: x 轴数据,可以是一个数组或列表。

y: y 轴数据,可以是一个数组或列表。

format_string: 格式字符串,用于指定线条样式、颜色等。

**kwargs: 其他关键字参数,用于指定线条的属性。

plot 函数可以接受一个或两个数组作为参数,分别代表 x 和 y 坐标。如果你只提供一个数组,它将默认用作 y 坐标,而 x 坐标将默认为数组的索引。

格式字符串

格式字符串由颜色、标记和线条样式组成。例如:

颜色:

'b':蓝色 'g':绿色 'r':红色 'c':青色 'm':洋红色 'y':黄色 'k':黑色 'w':白色

标记:

'.':点标记

',':像素标记

'o':圆圈标记

'v':向下三角标记

'^':向上三角标记

'<':向左三角标记

'>':向右三角标记

's':方形标记

'p':五边形标记

'*':星形标记

'h':六边形标记1

'H':六边形标记2

'+':加号标记

'x':叉号标记

'D':菱形标记

'd':细菱形标记

'|':竖线标记

'_':横线标记

线条样式:

'-':实线 '--':虚线 '-.':点划线 ':':点线

案例:

警告日志关闭

import logging
logging.captureWarnings(True)

6.2 figure 函数

figure() 函数来实例化 figure 对象,即绘制图形的对象,可以通过这个对象,来设置图形的样式等

参数:

figsize:指定画布的大小,(宽度,高度),单位为英寸

dpi:指定绘图对象的分辨率,即每英寸多少个像素,默认值为80

facecolor:背景颜色

dgecolor:边框颜色

frameon:是否显示边框

6.2.1 figure.add_axes()

Matplotlib 定义了一个 axes 类(轴域类),该类的对象被称为 axes 对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布(figure)中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用

参数

是一个包含四个元素的列表或元组,格式为 [left, bottom, width, height],其中:

left 和 bottom 是轴域左下角的坐标,范围从 0 到 1。

width 和 height 是轴域的宽度和高度,范围从 0 到 1。

案例:


6.2.2 axes.legend()

legend 函数用于添加图例,以便识别图中的不同数据系列。图例会自动显示每条线或数据集的标签。

参数:

labels 是一个字符串序列,用来指定标签的名称

loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示

handles 参数,它也是一个序列,它包含了所有线型的实例

案例:


legend() 函数 loc 参数:

位置字符串表示整数数字表示
自适应best0
右上方upper right1
左上方upper left2
左下lower left3
右下lower right4
右侧right5
居中靠左center left6
居中靠右center right7
底部居中lower center8
上部居中upper center9
中部center10

6.3 标题中文乱码

如果标题设置的是中文,会出现乱码

局部处理:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

全局处理:

首先,找到 matplotlibrc 文件的位置,可以使用以下代码:

然后,修改 matplotlibrc 文件,找到 font.family 和 font.sans-serif 项,设置为支持中文的字体,如 SimHei。

同时,设置 axes.unicode_minus 为 False 以正常显示负号。

修改完成后,重启pyCharm。如果不能解决,尝试运行以下代码来实现:

from matplotlib.font_manager import _rebuild
_rebuild()

6.4 subplot 函数

subplot 是一个较早的函数,用于创建并返回一个子图对象。它的使用比较简单,通常用于创建网格状的子图布局。subplot 的参数通常是一个三位数的整数,其中每个数字代表子图的行数、列数和子图的索引。

add_subplot 是一个更灵活的函数,它是 Figure类的一个方法,用于向图形容器中添加子图。推荐使用 add_subplot,因为它提供了更好的灵活性和控制。

语法:

fig.add_subplot(nrows, ncols, index)

案例:


6.5 subplots 函数

subplots 是 matplotlib.pyplot 模块中的一个函数,用于创建一个包含多个子图(subplots)的图形窗口。subplots 函数返回一个包含所有子图的数组,这使得你可以更方便地对每个子图进行操作。

语法

fig, axs = plt.subplots(nrows, ncols, figsize=(width, height))

参数

nrows: 子图的行数。

ncols: 子图的列数。

figsize: 图形的尺寸,以英寸为单位。

案例:

plt.subplot():适合逐个创建子图,适合简单的子图布局。

plt.subplots():适合一次性创建多个子图,适合复杂的子图布局和统一管理。

7.绘制图表

7.1 柱状图

柱状图(Bar Chart)是一种常用的数据可视化工具,用于展示分类数据的分布情况。

语法

ax.bar(x, height, width=0.8, bottom=None, align='center', **kwargs)

参数

x: 柱状图的 X 轴位置。

height: 柱状图的高度。

width: 柱状图的宽度,默认为 0.8。

bottom: 柱状图的底部位置,默认为 0。

align: 柱状图的对齐方式,可以是 'center'(居中对齐)或 'edge'(边缘对齐)。

**kwargs: 其他可选参数,用于定制柱状图的外观,如 color、edgecolor、linewidth 等。

案例1:


案例2:堆叠柱状图


说明:

bottom=values1:绘制第二个数据集的柱状图,堆叠在第一个数据集上

案例3:分组柱状图


7.2 直方图

直方图(Histogram)是一种常用的数据可视化工具,用于展示数值数据的分布情况。

语法

ax.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, **kwargs)

参数

x: 数据数组。

bins: 直方图的柱数,可以是整数或序列。

range: 直方图的范围,格式为 (min, max)。

density: 是否将直方图归一化,默认为 False。

weights: 每个数据点的权重。

cumulative: 是否绘制累积直方图,默认为 False。

**kwargs: 其他可选参数,用于定制直方图的外观,如 color、edgecolor、linewidth 等。

案例:


7.3 饼图

饼图(Pie Chart)是一种常用的数据可视化工具,用于展示分类数据的占比情况。

语法

ax.pie(x, explode=None, labels=None, colors=None, autopct=None, shadow=False, startangle=0, **kwargs)

参数

x: 数据数组,表示每个扇区的占比。

explode: 一个数组,表示每个扇区偏离圆心的距离,默认为 None。

labels: 每个扇区的标签,默认为 None。

colors: 每个扇区的颜色,默认为 None。

autopct: 控制显示每个扇区的占比,可以是格式化字符串或函数,默认为 None。

shadow: 是否显示阴影,默认为 False。

startangle: 饼图的起始角度,默认为 0。

**kwargs: 其他可选参数,用于定制饼图的外观。

案例:


7.4 折线图

使用 plot 函数

案例:


7.5 散点图

散点图(Scatter Plot)是一种常用的数据可视化工具,用于展示两个变量之间的关系。

语法

ax.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, **kwargs)

参数

x: X 轴数据。

y: Y 轴数据。

s: 点的大小,可以是标量或数组。

c: 点的颜色,可以是标量、数组或颜色列表。

marker: 点的形状,默认为 'o'(圆圈)。

cmap: 颜色映射,用于将颜色映射到数据。

norm: 归一化对象,用于将数据映射到颜色映射。

vmin, vmax: 颜色映射的最小值和最大值。

alpha: 点的透明度,取值范围为 0 到 1。

linewidths: 点的边框宽度。

edgecolors: 点的边框颜色。

**kwargs: 其他可选参数,用于定制散点图的外观。

案例:


marker常用的参数值:

'o': 圆圈

's': 正方形

'D': 菱形

'^': 上三角形

'v': 下三角形

'>': 右三角形

'<': 左三角形

'p': 五边形

'*': 星形

'+': 加号

'x': 叉号

'.': 点

',': 像素

'1': 三叉戟下

'2': 三叉戟上

'3': 三叉戟左

'4': 三叉戟右

'h': 六边形1

'H': 六边形2

'd': 小菱形

'|': 竖线

'_': 横线

7.6 图片读取

plt.imread 是 Matplotlib 库中的一个函数,用于读取图像文件并将其转换为 NumPy 数组。这个函数非常方便,可以轻松地将图像加载到 Python 中进行处理或显示。

参数

fname: 图像文件的路径(字符串)。

format: 图像格式(可选)。如果未指定,imread 会根据文件扩展名自动推断格式。

返回值

返回一个 NumPy 数组,表示图像的像素数据。数组的形状取决于图像的格式:

        对于灰度图像,返回一个二维数组 (height, width)

        对于彩色图像,返回一个三维数组 (height, width, channels),其中 channels 通常是 3(RGB)或 4(RGBA)。

案例:

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

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

相关文章

AI知识补全(八):多模态大模型是什么?

名人说&#xff1a;人生如逆旅&#xff0c;我亦是行人。 ——苏轼《临江仙送钱穆父》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知识补全&#xff08;七&#xff09;&#xff1a;AI Agent 智能…

Docker-MySQL安装-命令解读-常见命令-数据卷挂载-本地目录挂载-自定义镜像-网络-前端部署-DockerCompose

目录 Docker&#xff1a; 安装MySQL&#xff1a; 镜像容器&#xff1a; 镜像仓库&#xff1a; ​编辑命令解读&#xff1a; 镜像命名规范&#xff1a; docker run中常见参数&#xff1a; Docker常见命令&#xff1a; ​编辑数据卷&#xff1a; ​编辑数据卷-操作命令&…

Docker 安装部署Harbor 私有仓库

Docker 安装部署Harbor 私有仓库 系统环境:redhat x86_64 一、首先部署docker 环境 定制软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2…

StarRocks 存算分离在京东物流的落地实践

康琪&#xff1a;京东物流高级技术专家、StarRocks & Apache Flink Contributor 导读&#xff1a;本文整理自京东物流高级技术专家在 StarRocks 年度峰会上的分享&#xff0c;UData 平台从存算一体到存算分离架构演进后&#xff0c;查询性能得到提升。Cache hit 时&#xf…

英伟达GB300新宠:新型LPDDR5X SOCAMM内存

随着人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;和高性能计算&#xff08;HPC&#xff09;应用的快速发展&#xff0c;对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计&#xff0c;以满足这些严格…

具身智能 - Diffusion Policy:技术解析与应用实践

具身智能之 Diffusion Policy:技术解析与应用实践 一、Diffusion Policy 的核心概念 Diffusion Policy 是一种基于扩散模型(Diffusion Models)的决策生成框架,专为具身智能(Embodied Intelligence)设计。其核心思想是通过逐步去噪的过程,在复杂环境中生成鲁棒的动作序列…

[C++] 智能指针 进阶

标题&#xff1a;[C] 智能指针 进阶 水墨不写bug 在很久之前我们探讨了智能指针的浅显认识&#xff0c;接下来会更加深入&#xff0c;从源码角度认识智能指针&#xff0c;从而了解智能指针的设计原理&#xff0c;并应用到以后的工作项目中。 本文将会按照C智能指针的发展历史&…

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化&#xff0c;为后续的容器部署和管理提供基础&#xff1b;kubectl作为命令行工具&#xff0c;提供了与Kubernetes集群交互的便捷方式&#xff1b;而…

C++中的new、malloc、realloc、calloc——特点?函数原型?释放方式?区别?校招面试常问内容?

作者&#xff1a;求一个demo 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 内容通俗易懂&#xff0c;没有废话&#xff0c;文章最后是面试常问内容&#xff08;建议通过标题目录学习&#xff09; 废话不多…

27_promise

插入一下前端助手测试&#xff0c;顺手可以用来做安全 promise promise 是一个es6新增的语法 汉语&#xff1a;承诺的意思 作用:是专门用来解决回调地狱!!!! 什么是回调函数&#xff1f; <script>// 回调函数 callback回调// 就是把函数A当作参数传递到函数B中// 在函…

leetcode刷题日记——跳跃游戏 II

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求在一个一定能达到数组末尾的跳跃数组中(见55题 跳跃游戏)&#xff0c;找出能够跳到末尾的最小次数要求次数最少&#xff0c;那肯定是选取能选步数中最大的数。也就是在当前能够达到的距离中&#xff0c;选择能够达到的…

无人机进行航空数据收集对于分析道路状况非常有用-使用无人机勘测高速公路而不阻碍交通-

无人机进行航空数据收集对于分析道路状况非常有用-使用无人机勘测高速公路而不阻碍交通- 瑞士拥有1,400 多公里长的高速公路网络。这些公路将人和货物从山谷高原运送到阿尔卑斯山的最高山口。维护这些高速公路使国家得以顺利运转。高速公路维护的重要性显而易见&#xff0c;但在…

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…

鸿蒙项目源码-记账本app个人财物管理-原创!原创!原创!

鸿蒙记账项目源码个人财务管理含文档包运行成功ArkTS语言。 我一个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01; api12 SDK5.0.0仅适用于最新的2024版本DevEco studio 共9个页面&#xff1a;广告倒计时页、登录、…

Ovito的python脚本

在 OVITO 里,Python 对象是构建脚本化操作的基础。下面为你详细介绍 OVITO 中 Python 对象的基本概念: 1. 数据管道(Pipeline) 数据管道是 OVITO 里最核心的对象之一。它就像一个流水线,把数据输入进来,经过一系列处理步骤,最后输出处理好的数据。 创建管道:借助 imp…

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间&#xff1a;2007-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政在文化、…

NOIP2007提高组.矩阵取数游戏

题目 492. 矩阵取数游戏 思路 不难发现, 每一行之间是独立的, 因此可以求出每一行的最大值, 然后行与行之间最大值相加, 就是总的最大值 对于行内来说, 每次可以选取左边或者右边, 可以使用区间 d p dp dp求解, 时间复杂度 O ( n 3 ) O(n ^ 3) O(n3), 因为列的最大值是 80 …

项目实战--权限列表

后端数据&#xff1a; 用表格实现权限列表 const dataSource [{key: 1,name: 胡彦斌,age: 32,address: 西湖区湖底公园1号,},{key: 2,name: 胡彦祖,age: 42,address: 西湖区湖底公园1号,}, ];const columns [{title: 姓名,dataIndex: name,key: name,},{title: 年龄,dataInd…

若依赖前端处理后端返回的错误状态码

【背景】 后端新增加了一个过滤器&#xff0c;用来处理前端请求中的session 若依赖存放过滤器的目录&#xff1a;RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\ 【问题】 后端返回了一个状态码为403的错误&#xff0c;现在前端需要处理这…