函数知识点
plt.subplots()
fig
视为整个画布,而ax
是画布上的一个子区域(即子图)
fig, (ax1, ax2) = plt.subplots(1, 2)
# 在第一个子图(ax1)上绘制直线
ax1.plot([1, 2, 3], [4, 5, 6])
# 在第二个子图(ax2)上绘制散点图
ax2.scatter([1, 2, 3], [4, 5, 6])
fig, axes = plt.subplots(2, 3, figsize=(10, 6),
dpi=100, sharex=True, sharey=True)#共享x轴刻度,默认false
clear axis
的缩写,清除子图的所有内容,但保留那个框框
plt.xlable()
x轴标签
plt.xlabel('X Axis')
plt.xlim()
x 轴的上下限
plt.xlim(1, 6)
plt.xscale()
x轴刻度缩放,有linear 和 log
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.xscale('log') # 设置 x 轴的刻度缩放为对数刻度
plt.legend()
图形添加图例(legend)
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
# 添加图例
plt.legend()
plt.grid( )
plt.grid(True) # 显示网格线
plt.gca()
get current axes
(获取当前坐标轴)的缩写。gca
函数返回当前图中的坐标轴对象
使用 gca()
函数可以简化代码并提供更灵活的操作方式,使得在绘图过程中更加方便、高效。
fig = plt.figure()
# 添加一个子图(Subplot)并绘制曲线
ax = fig.add_subplot(111)
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)
# 在该图形上获取当前的坐标轴对象
current_ax = plt.gca()
# 对当前坐标轴对象进行操作
current_ax.set_xlabel("X")
current_ax.set_ylabel("Y")
current_ax.set_title("My Plot")
plt.scatter()
散点图scatter
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None)
其中,一些常用参数的说明如下:
x
:可选参数,表示数据点在 x 轴上的值,可以是一个一维数组或者列表。y
:可选参数,表示数据点在 y 轴上的值,可以是一个一维数组或者列表。s
:可选参数,表示数据点的大小,可以是一个标量,或者一个与x
、y
数组长度相同的一维数组。默认值为None
。c
:可选参数,表示数据点的颜色。可以是一个标量,或者一个与x
、y
数组长度相同的一维数组。默认值为None
。接受一个类别数组,每个类别映射到不同颜色marker
:可选参数,表示数据点的标记形状。默认为'o'
,表示圆点。
cmap
(颜色映射)、alpha
(透明度)等。
x = np.random.rand(50)
y = np.random.rand(50)
c = np.random.rand(50)
plt.scatter(x, y, c=c, cmap='cool')
plt.colorbar()
category = np.random.randint(0, 3, 50)
plt.scatter(x, y, c=category, cmap='viridis')
plt.colorbar(ticks=[0, 1, 2])
#两种用法
plt.plot()
plt.plot(x, y, color='red', linestyle='-',
linewidth=2.5, marker='o', markersize=8, label='data')
color
:指定线条的颜色,可以使用颜色名称或RGB值。例如,color='red'
或color=(0, 0, 1)
linestyle
:指定线条的样式,如实线、虚线
fmts用于指定线条的样式、颜色和标记等属性。参数是一个字符串,它由一个或多个字符组成
plt.plot(x, y, 'r--') # 绘制红色虚线
plt.contours() plt.contoursf()
注意,当 colors
参数和 cmap
参数同时指定时,colors
参数会覆盖 cmap
参数,即按照指定的颜色来绘制等高线,而不使用颜色映射。如果两者都未指定,等高线默认使用 cmap
参数的颜色映射。
- levels: 绘制等高线的高度级别,可以是一个数组或标量。默认为 10。
-
cmap
参数用于指定等高线的颜色映射(color map),即将数值映射到颜色的规则。常见的颜色映射包括 'viridis'、'jet'、'coolwarm' 等等。Matplotlib 提供了多种内置的颜色映射,你也可以自定义自己的颜色映射。默认情况下,cmap='viridis'(色盲友好)
-
colors
参数用于指定等高线的颜色。它可以是一个颜色字符串,也可以是颜色的列表或数组。如果是一个字符串,会将所有等高线使用该颜色;如果是一个列表或数组,可以分别指定每个等高线的颜色。例如,colors='red'
或colors=['red', 'blue', 'green']
。
X, Y = np.meshgrid(x, y)
# 计算 Z 值(高度值)
Z = np.sin(X) + np.cos(Y)
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
contours = plt.contour(X, Y, Z, levels=10, cmap='viridis')
plt.colorbar(contours)
plt.subplot(1, 2, 2)
contour_filled = plt.contourf(X, Y, Z, levels=20, cmap='coolwarm')
plt.colorbar(contour_filled)
plt.show()
plt.inshow(),plt.imread()
plt.imread()用于读取图像文件并返回一个表示图像数据的 NumPy 数组。
plt.inshow()函数将二维数组或图像数据以颜色编码的形式显示在坐标轴上。它将数组的值映射到一种颜色映射(colormap)中,并根据数组中每个元素的值来决定显示的颜色。
interpolation='bilinear'#双线性插值产生较为平滑的图像,周围四个计算中间的像素值(三次线性插值)像素数量它会自己调整
image = plt.imread('path_to_image.jpg')
plt.imshow(image)
np.random.seed(42)
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot')
plt.imshow(data,cmap='hot', interpolation='bilinear')
#双线性插值,图像更平滑
plt.colorbar()
plt.show()
实操
1.def show_images
def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5): #@save
"""绘制图像列表"""
figsize = (num_cols * scale, num_rows * scale)
_, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)
axes = axes.flatten()
for i, (ax, img) in enumerate(zip(axes, imgs)):
if torch.is_tensor(img):
# 图片张量
ax.imshow(img.numpy())
else:
# PIL图片
ax.imshow(img)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
if titles:
ax.set_title(titles[i])
return axes