## 和大(小)师(白)一起学Python(九)matplotlib绘图

## 和大(小)师(白)一起学Python(九)matplotlib绘图,第1张

## 和大(小)师(白)一起学Python(九)matplotlib绘图 和大(小)师(白)一起学Python(九)matplotlib绘图

本文参考《深度学习教科书》石川聪彦 著,陈欢 译
所有代码运行时请删除“%matplotlib inline”

11.2.1 同一图表绘制两种数据

# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
labels = ["90°", "180°", "270°", "360°"]
positions = [np.pi/2, np.pi, np.pi*3/2, np.pi*2]
# 设置图表的标题
plt.title("graphs of trigonometric functions")
# 设置图表中 x 轴与 y 轴的名称
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# 在图表中显示网格
plt.grid(True)
# 设置图表中 x 轴上的标签
plt.xticks(positions, labels)
# 请将数据 x、y1 绘制到图表中,并用黑色对其进行显示
plt.plot(x, y1, color="k") 

# 请将数据 x、y2 绘制到图表中,并用蓝色对其进行显示
plt.plot(x, y2, color="b") 

plt.show()

11.2.2 设置图例

# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
labels = ["90°", "180°", "270°", "360°"]
positions = [np.pi/2, np.pi, np.pi*3/2, np.pi*2]
# 设置图表的标题
plt.title("graphs of trigonometric functions")
# 设置图表中 x 轴与 y 轴的名称
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# 在图表中显示网格
plt.grid(True)
# 设置图表中 x 轴上的标签
plt.xticks(positions, labels)
# 请将数据 x、y1 绘制到图表中,使用 “y=sin(x)” 添加标签并使用黑色显示
plt.plot(x, y1, color="k", label="y=sin(x)")
# 请将数据 x、y2 绘制到图表中,使用 “y=cos(x)” 添加标签并使用蓝色显示
plt.plot(x, y2, color="b", label="y=cos(x)")
# 请设置序列标签
plt.legend(["y=sin(x)", "y=cos(x)"])

plt.show()

11.3 多个子图的绘制

# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x = np.linspace(0, 2*np.pi)
y = np.sin(x)
labels = ["90°", "180°", "270°", "360°"]
positions = [np.pi/2, np.pi, np.pi*3/2, np.pi*2]

# 创建 Figure 对象
fig = plt.figure(figsize=(9, 6))
# 请在 2 × 3 的布局中,从上面数第 2 行,从左边数第 2 列的位置上创建子图对象ax
ax = fig.add_subplot(2, 3, 5)
# 将图中子图之间的空白间距的横向和纵向的比例都设为 1
plt.subplots_adjust(wspace=1, hspace=1)
# 请将子图 ax 中图表的 y 轴的显示范围设置为 [0, 1]
ax.set_ylim([0, 1])

# 将数据 x、y 绘制到图表中并对图表进行显示
ax.plot(x,y)
# 将子图填入空白部分
axi = []
for i in range(6):
    if i==4:
        continue
    fig.add_subplot(2, 3, i+1)
plt.show()
# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x = np.linspace(0, 2*np.pi)
y = np.sin(x)

# 创建 Figure 对象
fig = plt.figure(figsize=(9, 6))
# 请在 2 × 3 的布局中,从上面数第 2 行,从左边数第 2 列的位置上创建子图对象ax
ax = fig.add_subplot(2, 3, 5)
# 将图中子图之间的空白间距的横向和纵向的比例都设为 1
plt.subplots_adjust(wspace=1.0, hspace=1.0)
# 请在子图 ax 的图表中设置网格


# 设置子图 ax 的图表标题
ax.set_title("y=sin(x)")
# 设置子图 ax 中图表的 x 轴、y 轴的名称
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
# 将数据 x、y 绘制到图表中并对图表进行显示
ax.plot(x,y)
#将子图填入空白部分
axi = []
for i in range(6):
    if i==4:
        continue
    fig.add_subplot(2, 3, i+1)
plt.show()
# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x = np.linspace(0, 2*np.pi)
y = np.sin(x)
positions = [0, np.pi/2, np.pi, np.pi*3/2, np.pi*2]
labels = ["0°", "90°", "180°", "270°", "360°"]

# 创建 Figure 对象
fig = plt.figure(figsize=(9, 6))
# 请在 2 × 3 的布局中,从上面数第 2 行,从左边数第 2 列的位置上创建子图对象ax
ax = fig.add_subplot(2, 3, 5)
# 将图中子图之间的空白间距的横向和纵向的比例都设为 1
plt.subplots_adjust(wspace=1, hspace=1)
# 将数据 x、y 绘制到图表中并对图表进行显示
ax.grid(True)
# 设置子图 ax 的图表标题
ax.set_title("y=sin(x)")
# 设置子图 ax 中图表的 x 轴、y 轴的名称
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
# 请设置子图 ax 中图表的 x 轴的刻度
ax.set_xticks(positions)
ax.set_xticklabels(labels)

# 将数据 x、y 绘制到图表中并对图表进行显示
ax.plot(x,y)
#将子图填入空白部分
axi = []
for i in range(6):
    if i==4:
        continue
    fig.add_subplot(2, 3, i+1)
plt.show()

案例

# 将 matplotlib.pyplot 作为 plt 进行导入
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x_upper = np.linspace(0, 5)
x_lower = np.linspace(0, 2 * np.pi)
x_tan = np.linspace(-np.pi / 2, np.pi / 2)
positions_upper = [i for i in range(5)]
positions_lower = [0, np.pi / 2, np.pi, np.pi * 3 / 2, np.pi * 2]
positions_tan = [-np.pi / 2, 0, np.pi / 2]
labels_upper = [i for i in range(5)]
labels_lower = ["0°", "90°", "180°", "270°", "360°"]
labels_tan = ["-90°", "0°", "90°"]

# 创建 Figure 对象
fig = plt.figure(figsize=(9, 6))

# 请绘制布局为 3 × 2 的多个函数的图表
# 请设置子图并注意不要将它们重叠
plt.subplots_adjust(wspace=0.4, hspace=0.4)

# 创建上侧的子图
for i in range(3):
    y_upper = x_upper ** (i + 1)
    ax = fig.add_subplot(2, 3, i + 1)
    # 将数据 x、y 绘制到图表中并对图表进行显示
    ax.grid(True)
    # 设置子图 ax 的图表标题
    ax.set_title("$y=x^%i$" % (i + 1))
    # 设置子图 ax 中图表的 x 轴、y 轴的名称
    ax.set_xlabel("x-axis")
    ax.set_ylabel("y-axis")
    # 设置子图 ax 中图表的 x 轴的标签
    ax.set_xticks(positions_upper)
    ax.set_xticklabels(labels_upper)
    # 将数据 x、y 绘制到图表中并对图表进行显示
    ax.plot(x_upper, y_upper)

# 创建下侧的子图
# 如果预先将所使用的函数和标题保存到列表中,就可以使用 for 语句进行处理
y_lower_list = [np.sin(x_lower), np.cos(x_lower)]
title_list = ["$y=sin(x)$", "$y=cos(x)$"]
for i in range(2):
    y_lower = y_lower_list[i]
    ax = fig.add_subplot(2, 3, i + 4)
    # 将数据 x、y 绘制到图表中并对图表进行显示
    ax.grid(True)
    # 设置子图 ax 的图表标题
    ax.set_title(title_list[i])
    # 设置子图 ax 中图表的 x 轴、y 轴的名称
    ax.set_xlabel("x-axis")
    ax.set_ylabel("y-axis")
    # 设置子图 ax 中图表的 x 轴的标签
    ax.set_xticks(positions_lower)
    ax.set_xticklabels(labels_lower)
    # 将数据 x、y 绘制到图表中并对图表进行显示
    ax.plot(x_lower, y_lower)

# y=tan(x)的图表
ax = fig.add_subplot(2, 3, 6)
# 将数据 x、y 绘制到图表中并对图表进行显示
ax.grid(True)
# 设置子图 ax 的图表标题
ax.set_title("$y=tan(x)$")
# 设置子图 ax 中图表的 x 轴、y 轴的名称
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
# 设置子图 ax 中图表的 x 轴的标签
ax.set_xticks(positions_tan)
ax.set_xticklabels(labels_tan)
# 设置子图 ax 中图表的 y 轴的显示范围
ax.set_ylim(-1, 1)
# 将数据 x、y 绘制到图表中并对图表进行显示
ax.plot(x_tan, np.tan(x_tan))
    
plt.show()

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5651081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存