跳至主要內容

03-尝鲜,绘制第一张图

AndersonHJB原创PythonPython一对一教学Python 辅导编程一对一教学案例上手 Python 数据可视化Matplotlib Python 数据可视化PythonPython一对一教学Python 辅导编程一对一教学案例上手 Python 数据可视化Matplotlib Python 数据可视化大约 10 分钟...约 3051 字

你好,我是悦创。

在本课中,我们将学习如何通过使用函数 subplot() 在画布上画出一条线。

让我们一步一步的来画第一张图。这个过程将教我们如何系统的画一张图。在这个图中,我们使用 numpy 生成数据,作两条线。

第1步 创建数据集

首先我们创建数据集,它将由两条线组成。在这个例子中,使用 numpy 生成一系列的点,作为 x 轴的数值。然后,使用 sin 计算 x 轴的每一个值,生成值作为 y 轴。

代码
import numpy as np

points = np.linspace(-5, 5, 256)
y1 = np.power(points, 3) + 2.0
y2 = np.sin(points) - 1.0

第2步 创建画布

然后我们将创建一个只有作图区域(axes)的画布。函数 subplots() 的功能是创建一个具有指定布局的图形,或画布。如果我们不传递 nrowsncols 参数,subplots() 将创建一个只有一条轴的画布。

import matplotlib.pyplot as plt
fig, axe = plt.subplots()
plt.subplots()
plt.subplots()

探究

plt.subplots(nrows=1, ncols=2)
import matplotlib.pyplot as plt
fig, axe = plt.subplots(nrows=1, ncols=2)  # 一行两列

figaxe 是在 matplotlib 中用于创建图形和子图的对象。

具体来说,figmatplotlib.figure.Figure 类型的对象,表示整个图形或绘图区域。它包含一个或多个子图 (axes),并提供了访问和管理子图的方法。在上述代码中,fig 表示一个包含两个子图的图形对象。

axe 则是一个包含子图 (axes) 对象的数组,它是 matplotlib.axes.Axes 类型的对象。子图是图形中的一个单独的绘图区域,用于绘制数据。在上述代码中,axe 是一个包含两个子图对象的数组,每个子图对象可以用于绘制数据和设置绘图属性。

比如下面的代码, axe 就有四个数据:

自行多测试测试即可。

第3步 画图

接下来,我们将通过使用 plot 将数据添加到轴上。默认情况下,第一个参数是用于 X 轴,第二个参数是用于 Y 轴。

axe.plot(points, y1)
axe.plot(points, y2)

第4步 显示图片

我们可以通过调用 plt.show() 来显示我们的图片。

plt.show()

注意:这里的 plt 是对 matplotlib.pyplot 的引用。

注意:上面的代码与下面的代码不同。在 PC 上,我们可以调用 plt.show() 来在屏幕上显示图像。然而,在下面的示例代码中,我们需要将图像输出为一个文件。

import numpy as np
import matplotlib.pyplot as plt

points = np.linspace(-5, 5, 256)
y1 = np.tanh(points) + 0.5
y2 = np.sin(points) - 0.2

fig, axe = plt.subplots(figsize=(7, 3.5), dpi=300)
axe.plot(points, y1)
axe.plot(points, y2)
fig.savefig('output/to.png')

plt.close(fig)
通过 subplot 画两条线
通过 subplot 画两条线

figsizedpi 是用于指定图像大小和分辨率的参数。

  • figsize 是一个元组,用于指定图像的宽度和高度(以英寸为单位)。在示例代码中,figsize=(7, 3.5) 指定了图像的宽度为 7 英寸,高度为 3.5 英寸。
  • dpi 则是用于指定图像的分辨率,即每英寸包含的像素数。在示例代码中,dpi=300 表示每英寸包含 300 个像素。

这些参数对于生成高质量的图像非常重要。通常,我们希望图像足够大和分辨率足够高,以便在不失真的情况下放大或打印图像。但是,过大的图像和过高的分辨率也会增加图像的文件大小和处理时间。因此,需要根据具体应用场景进行调整。

补充「dpi 像素怎么调整?」

dpi 参数可以通过在 savefig()subplots() 方法中传入不同的值来调整。

savefig() 方法中,可以通过设置 dpi 参数来指定保存图像的分辨率,示例代码如下:

fig.savefig('output/to.png', dpi=150)

上述代码将图像的分辨率设置为 150 dpi。

subplots() 方法中,可以通过设置 dpi 参数来指定图像的分辨率,示例代码如下:

fig, axe = plt.subplots(figsize=(7, 3.5), dpi=150)

上述代码将图像的分辨率设置为 150 dpi。

需要注意的是,dpi 参数的取值通常取决于具体应用场景和设备。通常情况下,屏幕的分辨率约为 72-96 dpi,而打印机的分辨率可能达到 300 dpi 或更高。因此,在生成图像时需要根据具体情况选择适当的分辨率。

第5步 总结

在本课中,我们学习了如何使用 figueraxes 来绘制图表。然而,有许多不同的方法来绘制图表。在其他情况下,其他绘制图表的方法可能更方便。然后其他方法不太灵活,因为它们只允许我们在一个图上绘制一个子图。选择哪种方法最有效,取决于我们想如何直观地表示我们的数据。在下一课,我们将学习绘制图表的其他方法。

杂谈

import numpy as np
import matplotlib.pyplot as plt


def f(x):
    return 2 * x + 1


points = np.linspace(-5, 5, 256)
y1 = map(f, points)
y1 = np.array(list(y1))

fig, axe = plt.subplots(figsize=(7, 3.5), dpi=300)

axe.plot(points, y1)
plt.show()
# fig.savefig('to.png')
# plt.close(fig)
y = 2 * x + 1
y = 2 * x + 1

欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

公众号:AI悦创【二维码】

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Linux、Web全栈」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度