matplotlib的基本使用

安装

使用pip 进行安装即可,命令如下:

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

其他 pip 使用参考 Numpy总结-优快云博客 pip安装部分

概念

Matplotlib是一款用于数据可视化的 Python 软件包,主要是将NumPy的二维数据可视化展示。可使用Matplotlib进行2D图像的绘制。

在这里插入图片描述

  • figure 表示的是一个画布,绘图时,需要将图像绘制到画布上,画布上什么都没有。
  • axes 绘图区域,表示的是在画布上实际绘制的内容区域
  • axis 坐标轴,即平面直角坐标轴,也包括轴长,标签,刻度
  • artist 绘制的所有内容,包括线条,图例(sin(x))

快速上手

import matplotlib.pyplot as plt
import numpy as np

#将0-10微分为100份
x = np.linspace(0, 10, 100)
y = np.sin(x)#获得sin(x)
plt.plot(x, y, "r-", linewidth=1)#或者图像,指定颜色红色,线条宽度为1
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(4, 4), dpi=100)
x = np.linspace(0, 10, 100)
y = x ** 2

# add_axes 在画布中绘制图像,归一化参数 参考画布左下角[水平,垂直,绘制图像宽,绘制图像高]
ax = fig.add_axes([0.3, 0.3, 0.5, 0.5])
ax.plot(x, y,"r-",label="x^2") #label指定标签
ax.legend()# 显示标签


y1 = np.sin(x)
ax1 = fig.add_axes([0.8, 0.8, 0.5, 0.5])
ax1.plot(x, y1,"r-",label="sin(x)")
ax1.set_xlabel("水平标签")
ax1.set_title("标题")
ax1.legend(loc="best")

plt.show()
plt.close()


在这里插入图片描述

说明

后续中默认名称说明见以下代码

import matplotlib.pyplot as plt
import numpy as np

plot(绘制线条,标记)

使用

plt.plot()函数,根据传入的x,y 绘制二维函数图像。默认会生成一个axes 区域进行绘制

plt.plot(x, y, format_string=None, **kwargs)
  • axes对象可使用plot进行绘制
  • format_string 指定绘制线条的样式

格式字符串

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

颜色:

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

标记:

  • ‘.’:点标记

  • ‘,’:像素标记

  • ‘o’:圆圈标记

  • ‘v’:向下三角标记

  • ‘^’:向上三角标记

  • ‘<’:向左三角标记

  • ‘>’:向右三角标记

  • ‘s’:方形标记

  • ‘p’:五边形标记

  • ‘*’:星形标记

  • ‘h’:六边形标记1

  • ‘H’:六边形标记2

  • ‘+’:加号标记

  • ‘x’:叉号标记

  • ‘D’:菱形标记

  • ‘d’:细菱形标记

  • ‘|’:竖线标记

  • ‘_’:横线标记

线条样式:

  • ‘-’:实线
  • ‘–’:虚线、
  • ‘-.’:点划线
  • ‘:’:点线

figure(绘制图像对象)

plt.figure() 实例化一个新的图像对象,即实例出一个新的画布进行绘制图像

plt.figure([num,  figsize, dpi, facecolor, edgecolor, frameon, clear]) 
  • num:可选参数,用于指定图形的唯一编号。如果不提供,则每次调用figure函数都会自动递增编号。
  • figsize:可选参数,整数元组,指定图形的宽度和高度(单位为英寸)。如果不提供,则使用默认值。
  • dpi:可选参数,整数,指定图形的分辨率。如果不提供,则使用默认值。
  • facecolor:可选参数,字符串,指定图形的背景颜色。如果不提供,则使用默认值。
  • edgecolor:可选参数,字符串,指定图形的边框颜色。如果不提供,则使用默认值。
  • frameon:可选参数,布尔值,指定是否绘制图形的边框。默认值为True
  • clear:可选参数,布尔值,指定是否清除当前图形的内容。默认值为False

figure.add_axes

在图形对象(Figure)中添加一个新的绘图区域(axes

  • left:浮点数,新坐标轴在图形中的左边位置,取值范围为 0 到 1,表示图形宽度的比例。
  • bottom:浮点数,新坐标轴在图形中的底部位置,取值范围为 0 到 1,表示图形高度的比例。
  • width:浮点数,新坐标轴的宽度,取值范围为 0 到 1,表示图形宽度的比例。
  • height:浮点数,新坐标轴的高度,取值范围为 0 到 1,表示图形高度的比例。
add_axes([left, bottom, width, height]) 

import matplotlib.pyplot  as plt 
import numpy as np
# 创建一个图形对象 
fig = plt.figure()  
 
# 添加一个新的绘图区域(或者说添加一个坐标轴进行绘图) 
ax = fig.add_axes([0.1,  0.1, 0.8, 0.8]) 
 
# 在坐标轴上绘制一些数据 
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x,  y) 
 
# 显示图形 
plt.show()  
  • fig = plt.figure() 创建了一个空白的图形对象 fig
  • ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) 在图形中添加了一个坐标轴,这个坐标轴左边距离图形边缘 0.1(即图形宽度的 10%),底部距离图形边缘 0.1(即图形高度的 10%),宽度为图形宽度的 0.8(80%),高度为图形高度的 0.8(80%)。
  • 然后在新添加的坐标轴 ax 上绘制了数据点。

axes.legend()

通过调用 axes.legend() ,可以在图表上自动生成图例。如果不传入任何参数,legend() 函数将会自动获取图例句柄和与之相对应的图例标签。

ax.legend(handles=[line1, line2], labels=['Sine Function', 'Cosine Function'],loc='center')

handles 传入绘制的

loc 参数

loc 参数用于指定图例的位置。它接受一个字符串,表示图例的位置代码。以下是一些常用的位置代码及其含义:

  • 'best':自动选择最佳位置。
  • 'center':位于图标中间
  • 'upper right':图例位于图表的右上角。
  • 'upper left':图例位于图表的左上角。
  • 'lower left':图例位于图表的左下角。
  • 'lower right':图例位于图表的右下角。

handles参数 和labels参数

handles 传入线条列表,labels 图例名称与handles一一对应

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建图形和轴域
fig, ax = plt.subplots()

# 绘制数据
line1, = ax.plot(x, y1)  # 注意这里的逗号,解包返回的列表
line2, = ax.plot(x, y2)  # 注意这里的逗号,解包返回的列表

# 添加图例,手动指定标签
ax.legend(handles=[line1, line2], labels=['Sine Function', 'Cosine Function'], loc='center')

# 显示图形
plt.show()

在这里插入图片描述

标题中文乱码

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

局部处理

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() 和 subplots()

subplot()

通过 fig 对象返回子图,通过nrows,ncols 对fig进行网格划分,index对编号进行填充2

参数说明

  • nrows:表示图形排成的行数。
  • ncols:表示图形排成的列数。
  • index:表示当前子图的位置(编号),范围从1到nrows*ncols
fig.add_subplot(nrows, ncols, index)

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

# 创建图形,figsize=(宽度, 高度),单位是英寸,图形宽度为 12 英寸,高度为 4 英寸
fig = plt.figure(figsize=(12, 4))

# 第一个子图
ax1 = fig.add_subplot(1, 3, 1)
ax1.plot(x, y1, label='sin(x)')


# 第二个子图
ax2 = fig.add_subplot(1, 3, 2)
ax2.plot(x, y2, label='cos(x)')


# 第三个子图
ax3 = fig.add_subplot(1, 3, 3)
ax3.plot(x, y3, label='tan(x)')

# 显示图形
plt.tight_layout()
plt.show()

也可通过plt添加子图

import matplotlib.pyplot  as plt 
 
# 创建一个2x2的子图布局 
plt.subplot(2,  2, 1) 
plt.plot([1,  2, 3], [4, 5, 6]) 
 
plt.subplot(2,  2, 2) 
plt.plot([7,  8, 9], [10, 11, 12]) 
 
plt.subplot(2,  2, 3) 
plt.plot([13,  14, 15], [16, 17, 18]) 
 
plt.subplot(2,  2, 4) 
plt.plot([19,  20, 21], [22, 23, 24]) 
 
plt.show()  

subplots()

通过plt 一次性创建多个子图,并返回fig对象和图像列表

  • nrows:表示图形排成的行数。
  • ncols:表示图形排成的列数。
  • figsize: 表示每个图形的大小

通过plt创建 2 × 2 2\times2 2×2 的网格,每个网格大小为 ( 10 , 8 ) (10,8) (10,8)

import matplotlib.pyplot  as plt 
import numpy as np 
 
# 创建一个包含 2x2 子图的图形 
fig, axes = plt.subplots(nrows=2,  ncols=2, figsize=(10, 8)) 
 
# 生成数据 
x = np.linspace(0,  10, 100) 
y1 = np.sin(x)  
y2 = np.cos(x)  
y3 = np.exp(-x)  
y4 = np.power(x,  2) 
 
# 在第一个子图中绘制 sin 函数 
axes[0, 0].plot(x, y1, color='r') 
axes[0, 0].set_title('sin(x)') 
 
# 在第二个子图中绘制 cos 函数 
axes[0, 1].plot(x, y2, color='g') 
axes[0, 1].set_title('cos(x)') 
 
# 在第三个子图中绘制 exp(-x) 函数 
axes[1, 0].plot(x, y3, color='b') 
axes[1, 0].set_title('exp(-x)') 
 
# 在第四个子图中绘制 x^2 函数 
axes[1, 1].plot(x, y4, color='m') 
axes[1, 1].set_title('x^2') 
 
# 调整子图之间的间距 
plt.tight_layout()  
 
# 显示图形 
plt.show()  

subplot2grid()

subplot2grid 创建非等分的网格布局,从而更灵活地管理多个子图的放置和大小。

  • shape: 一个元组,表示网格的大小。例如,(2, 2) 表示一个 2x2 的网格。
  • location: 一个元组,表示子图在网格中的位置。例如,(0, 0) 表示左上角的子图。
  • rowspancolspan: 分别表示子图跨越的行数和列数。默认情况下,这两个参数都为 1。
plt.subplot2grid(shape,  location, rowspan=1, colspan=1) 
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)

fig = plt.figure(figsize=(12, 8))

# 第一个子图
ax1 = plt.subplot2grid((4, 3), (0, 0), colspan=3,rowspan=2)
ax1.plot(x, y1, label='sin(x)')
ax1.set_title('Sine Wave')
ax1.set_xlabel('X-axis')
ax1.set_ylabel('Y-axis')
ax1.legend()

# 第二个子图
ax2 = plt.subplot2grid((4, 3), (1, 2))
ax2.plot(x, y2, label='cos(x)')
ax2.set_title('Cosine Wave')
ax2.set_xlabel('X-axis')
ax2.set_ylabel('Y-axis')
ax2.legend()

# 第三个子图
ax3 = plt.subplot2grid((2, 2), (1, 0))
ax3.plot(x, y3, label='tan(x)')
ax3.set_title('Tangent Wave')
ax3.set_xlabel('X-axis')
ax3.set_ylabel('Y-axis')
ax3.legend()

# 第四个子图
ax4 = plt.subplot2grid((2, 2), (1, 1))
ax4.plot(x, y4, label='exp(x)')
ax4.set_title('Exponential Wave')
ax4.set_xlabel('X-axis')
ax4.set_ylabel('Y-axis')
ax4.legend()

# 显示图形
plt.show()

在这里插入图片描述

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 函数

可以自动根据因变量和自变量设置坐标轴范围,也可以通过 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 轴。

常用API

绘图类型

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

Image 函数

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

Axis 函数

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

Figure 函数

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

绘制其他图形

柱状图

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

参数说明:

  • **x:**轴
  • height: 高度(y轴)
  • width: 每个柱形宽度
  • bottom: 距底部距离,默认None(0)
  • align: 类型str柱形图在x对应点的位置
    • 'center':将条形的中心对齐到 x 坐标位置。
    • 'edge':将条形的左边缘对齐到 x 坐标位置。
  • 用于传递其他可选参数,例如条形的颜色 color、边框颜色 edgecolor、边框宽度 linewidth 等。

**例1 **绘制普通柱状图


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 11)
print(x)

y = np.copy(x)

fig,axs = plt.subplots()
axs.bar(x, y,width=0.5,align='center')
axs.set_xticks([0,1,2,3,4,5,6,7,8,9,10])
plt.show()

在这里插入图片描述

例2 堆叠柱状图


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 5)

y1 = np.array([3,2,3,6,4])
y2= np.full(y1.shape,fill_value=10)-y1
fig,axs = plt.subplots(figsize=(5,5))

axs.bar(x, y1,width=0.5,align='center')

# 距离底部高度为y1的高度
axs.bar(x, y2,bottom=y1,align='center',color='red')
plt.show()

在这里插入图片描述

**例3 **分组柱状图

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 10]

# 创建图形和子图
fig, ax = plt.subplots()

# 计算柱状图的位置
x = np.arange(len(categories))
width = 0.35

# 绘制第一个数据集的柱状图
# 通过位置偏移展示分组,除以1.9 使得之间有一定缝隙
ax.bar(x - width/1.9, values1, width, color='skyblue', label='Values 1')

# 绘制第二个数据集的柱状图
ax.bar(x + width/1.9, values2, width, color='lightgreen', label='Values 2')

# 设置 X 轴标签
ax.set_xticks(x)
ax.set_xticklabels(categories)

# 设置标题和标签
ax.set_title('Grouped Bar Chart')
ax.set_xlabel('Categories')
ax.set_ylabel('Values')

# 添加图例
ax.legend()

# 显示图形
plt.show()

在这里插入图片描述

直方图

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 等。
    • color:指定直方图的颜色。
    • edgecolor:指定直方图每个箱子的边缘颜色。
    • alpha:指定直方图的透明度,取值范围为 0 到 1。
    • linewidth: 线条宽度

from matplotlib import pyplot as plt
import numpy as np

# 随机生成0-10的均匀分布
uniform = np.random.uniform(0,10,100000)

# 创建图形和子图
fig, ax = plt.subplots(1,2,figsize=(12,4))

# 绘制直方图
ax[0].hist(uniform, bins=100, color='skyblue', edgecolor='black')
# 设置标题和标签
ax[0].set_title('Uniform')
ax[0].set_xlabel('Value')
ax[0].set_ylabel('Frequency')

# 正太分布,均值0,方差1
normal = np.random.normal(loc=0, scale=1, size=100000)

ax[1].hist(normal, bins=100, color='skyblue', edgecolor='red')
# 设置标题和标签
ax[1].set_title('Normal')
ax[1].set_xlabel('Value')
ax[1].set_ylabel('Frequency')
# 显示图形
plt.show()

在这里插入图片描述

饼图

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

参数说明

  • x
    • 类型:array-like
    • 说明:包含饼图各部分尺寸(数值)的数组。这些数值将会被归一化,以计算每部分在饼图中所占的比例。例如:x = [15, 30, 45, 10]
  • labels
    • 类型:list,默认值为 None
    • 说明:为饼图的每一块扇形提供标签。列表的长度应与 x 的长度相同。例如 labels = ['苹果', '香蕉', '橙子', '葡萄']
  • colors
    • 类型:array-like,默认值为 None
    • 说明:用于指定每一块扇形的颜色。如果为 None,则使用默认的颜色循环。可以是颜色名称(如 'red''blue' 等)、十六进制颜色码(如 '#FF5733')或其他 Matplotlib 支持的颜色表示方式。例如 colors = ['r', 'g', 'b', 'y']
  • autopct
    • 类型:strfunction,默认值为 None
    • 说明:用于在每一块扇形上显示百分比值。如果是字符串,可以使用格式化字符串,如 '%1.1f%%' 表示保留一位小数的百分比。如果是函数,则该函数应以一个数值作为输入,并返回一个字符串作为输出。
  • shadow
    • 类型:bool,默认值为 False
    • 说明:是否为饼图添加阴影效果。设置为 True 时,饼图会有阴影。
  • startangle
    • 类型:float,默认值为 0
    • 说明:饼图的起始角度(以度为单位),默认从 x 轴正方向开始逆时针旋转。例如 startangle = 90 时,饼图从 y 轴正方向开始绘制。
  • **kwargs
    • 说明:其他可选参数,用于进一步定制饼图的外观,例如线宽、边界颜色等。例如 edgecolor='k' 可以设置扇形的边界颜色为黑色。

import matplotlib.pyplot  as plt 
 
# 数据 
sizes = [15, 30, 45, 10] 
labels = ['苹果', '香蕉', '橙子', '葡萄'] 
colors = ['red', 'yellow', 'orange', 'purple'] 
explode = (0, 0.1, 0, 0)  # 突出显示香蕉,香蕉距离圆形0.1 
 
# 创建画布和子图 
fig, ax = plt.subplots()  
 
# 绘制饼图 
ax.pie(sizes,  explode=explode, labels=labels, colors=colors, 
       autopct='%1.1f%%', shadow=True, startangle=90) 
 
# 使饼图为正圆形 
ax.axis('equal')  
 
# 显示图形 
plt.show()  

在这里插入图片描述

折线图

ax.plot(*args,  scalex=True, scaley=True, data=None, **kwargs) 

参数说明:

  • *args:可以传入一个或多个数组来指定要绘制的数据。常见形式有 x, y 分别表示 x 轴和 y 轴的数据;也可以只传入一个数组,则默认该数组是 y 轴数据,x 轴数据为 range(len(y))
  • scalex, scaley:布尔值,分别控制是否对 x 轴和 y 轴进行自动缩放,默认为 True
  • data:可选参数,如果指定了该参数,xy 可以用数据中的列名来表示。
  • **kwargs:用于设置线条的属性,如颜色、样式、标记等。

import matplotlib.pyplot  as plt 
import numpy as np 
 
# 创建一个 Figure 和一个 Axes 对象 
fig, ax = plt.subplots(1,2,figsize=(12,4))  
 
# 生成数据 
x = np.linspace(0,  10, 10) 
y = np.sin(x)  

# 绘制折线图 
ax[0].plot(x,  y) 
# 设置标题和坐标轴标签 
ax[0].set_title('Sin  Function') 

x1 = np.random.uniform(0,10,10)
ax[1].plot(x1)

# 显示图形 
plt.show()  

在这里插入图片描述

散点图

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: 其他可选参数,用于定制散点图的外观。
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(start=0, stop=10, num=100)
y1 = np.random.uniform(0,10,100)

ax1 =  plt.scatter(x, y1)

y2 = np.random.uniform(8,20,100)
plt.scatter(x, y2,s=20,c='r',marker='_')

在这里插入图片描述

图片存取

imshow()

显示图像数据

import matplotlib.pyplot as plt
import numpy as np
import os

cwd = os.getcwd()
filepath = os.path.join(cwd, "subplot2grid.png")

data = plt.imread(filepath)

plt.imshow(data)
plt.show()
plt.close()

imsave()

保存图像数据

import matplotlib.pyplot as plt
import numpy as np
import os

cwd = os.getcwd()
filepath = os.path.join(cwd, "subplot2grid.png")

data = plt.imread(filepath)
data1 = data[::, ::, -1:]

for i in np.nditer(data1, op_flags=['readwrite']):
    i[...] = i - 0.5
plt.imshow(data)
plt.show()
plt.imsave("subplot2grid(2).png",data1) #传入保存路径,图像数据
### Matplotlib基本绘图操作 MatplotlibPython 中用于绘制图表的强大库。以下是关于如何使用 `matplotlib` 进行基本绘图的一些指导。 #### 创建简单的折线图 为了创建一条简单折线图,可以先导入必要的模块并定义数据集: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 4 * np.pi) # 生成 x 轴的数据 y = np.sin(x) # 计算对应的 y 值 plt.plot(x, y, label=r"$\sin(x)$") # 使用 LaTeX 表达式作为标签 plt.title('Sine Wave') plt.xlabel('Angle [radians]') plt.ylabel('sin(x)') plt.legend() plt.grid(True) plt.show() ``` 这段代码展示了怎样通过调用 `plot()` 函数来画出正弦波形,并设置了图形标题、坐标轴名称以及显示网格等功能[^3]。 #### 子图布局管理 当需要在同一窗口内展示多个子图时,可利用 `subplots()` 或者单独的 `subplot()` 方法实现多面板布局: ```python fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2) # 在不同位置上添加四个独立的小图 for i, axis in enumerate([ax1, ax2, ax3]): axis.plot(np.random.rand(10)) # 特定设置第四个子图为共享 Y 轴比例尺的例子 ax4.plot(np.arange(10), 'o-', color='red', markersize=8) ax4.set_title('Shared Y Axis with Ax3') ax4.sharey(ax3) plt.tight_layout() # 自动调整各子图间距防止重叠 plt.show() ``` 这里介绍了两种方式构建包含两个以上子图的对象;其中特别指出了第四张图片与第三张共享相同的Y轴范围[^2]。 #### 配置全局样式属性 对于整个项目的可视化风格统一化处理,可以通过修改 rc 参数来自定义线条宽度、颜色方案等外观特性: ```python from cycler import cycler plt.rc('lines', linewidth=2.5) plt.rc('axes', prop_cycle=(cycler(color=['tab:green', 'tab:red']))) plt.figure(figsize=(9, 6)) t = np.linspace(-np.pi, np.pi, 100) s = t ** 2 / 2. plt.plot(t, s, marker=".", linestyle="-.") plt.title("Customized Line Style Example") plt.show() ``` 上述脚本更改了默认线条粗细度和循环使用的色彩序列,从而影响后续所有新建立的 Axes 实例中的线条表现形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值