文章目录
安装
使用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) 表示左上角的子图。
- rowspan 和 colspan: 分别表示子图跨越的行数和列数。默认情况下,这两个参数都为 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
- 类型:
str
或function
,默认值为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
:可选参数,如果指定了该参数,x
和y
可以用数据中的列名来表示。**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) #传入保存路径,图像数据