Matplotlib 学习 笔记

Matplotlib

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

安装

打开控制面板:输入canda activate python-basic

进入canda环境,输入pip list 查看已安装的包

输入

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装matplotlib

安装完成,输入pip list 查看,已经安装好了matplotlib

常用API

绘图类型

Image 函数

Axis 函数

Figure 函数

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

常用函数

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':细菱形标记 '|':竖线标记 '_':横线标记

线条样式:

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

figure 函数

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

参数:

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

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

facecolor:背景颜色

dgecolor:边框颜色

frameon:是否显示边框

 figure.add_axes()

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

参数

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

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

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

axes.legend()

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

参数:

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

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

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

标题中文乱码

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

局部处理:
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

全局处理:

首先,找到 matplotlibrc 文件的位置,可以使用以下代码:
import matplotlib
print(matplotlib.matplotlib_fname())

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

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

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

_rebuild()

subplot 函数

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

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

语法:
fig.add_subplot(nrows, ncols, index)

subplots 函数

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

语法

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

参数

nrows: 子图的行数。

ncols: 子图的列数。

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

subplot2gird 函数

subplot2grid 是 matplotlib.pyplot 模块中的一个函数,用于在网格中创建子图。subplot2grid 允许你更灵活地指定子图的位置和大小,以非等分的形式对画布进行切分,使得你可以创建复杂的布局。

语法
ax = plt.subplot2grid(shape, loc, rowspan=1, colspan=1)

参数

shape: 网格的形状,格式为 (rows, cols),表示网格的行数和列数,在figure中式全局设置。

loc: 子图的起始位置,格式为 (row, col),表示子图在网格中的起始行和列。

rowspan: 子图占据的行数,默认为 1。

colspan: 子图占据的列数,默认为 1。

grid 函数

grid 是用于在图形中添加网格线的函数。网格线可以帮助读者更清晰地理解数据的分布和趋势。grid 函数可以应用于 Axes 对象,用于在子图中添加网格线。

语法
ax.grid(b=None, which='major', axis='both', **kwargs)

参数

b: 是否显示网格线,默认为 None,表示根据当前设置显示或隐藏网格线。

which: 指定要显示的网格线类型,可以是 'major'(主刻度)、'minor'(次刻度)或 'both'(主刻度和次刻度)。

axis: 指定要显示网格线的轴,可以是 'both'(两个轴)、'x'(X 轴)或 'y'(Y 轴)。

kwargs: 其他可选参数,用于定制网格线的外观,如 color、linestyle、linewidth 等。

xscale 和 yscale 函数

xscale 和 yscale 函数用于设置坐标轴的刻度类型。默认情况下,坐标轴的刻度类型是线性的,但你可以使用 xscale 和 yscale 函数将其更改为对数刻度或其他类型的刻度。

语法
ax.set_xscale(value)
ax.set_yscale(value)

参数

value: 刻度类型,可以是 'linear'(线性刻度)、'log'(对数刻度)、'symlog'(对称对数刻度)、'logit'(对数几率刻度)等。

set_xlim 和 set_ylim 函数

set_xlim 和 set_ylim 函数用于设置坐标轴的范围。

语法
ax.set_xlim(left, right)
ax.set_ylim(bottom, top)

参数

left 和 right: X 轴的范围,left 是 X 轴的最小值,right 是 X 轴的最大值。

bottom 和 top: Y 轴的范围,bottom 是 Y 轴的最小值,top 是 Y 轴的最大值。

set_xticks 和 set_yticks 函数

​ Matplotlib 可以自动根据因变量和自变量设置坐标轴范围,也可以通过 set_xticks() 和 set_yticks() 函数手动指定刻度,接收一个列表对象作为参数,列表中的元素表示对应数轴上要显示的刻度。

语法
ax.set_xticks(ticks)
ax.set_yticks(ticks)

参数

ticks: 一个包含刻度位置的列表或数组

twinx 和 twiny 函数

twinx 和 twiny 函数用于在同一个图形中创建共享 X 轴或 Y 轴的多个子图。twinx 函数用于创建共享 X 轴的子图,twiny 函数用于创建共享 Y 轴的子图。

语法
ax2 = ax.twinx()
ax2 = ax.twiny()

说明:

ax: 原始的 Axes 对象。

ax2: 新的 Axes 对象,共享原始 Axes 对象的 X 轴或 Y 轴。

柱状图

(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 等。

直方图

直方图(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: 其他可选参数,用于定制直方图的外观,如 coloredgecolorlinewidth 等。

饼图

饼图(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: 其他可选参数,用于定制饼图的外观。

折线图

​ 使用 plot 函数

散点图

散点图(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: 其他可选参数,用于定制散点图的外观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值