python数据处理作业5:在一个图里的两个子图分别完成函数f(x)=sin(x)和f(x)=cos(x)的曲线,其中x取[0,360]度。设置图名,坐标刻度和坐标名称

每日小语

只有当精神在一种相当绝对的支离破碎状态下重新找到自己,他才赢得它的真理。——黑格尔

gpt代码学习

import numpy as np
import matplotlib.pyplot as plt

# 生成 x 数据,取值范围为 [0, 360] 度
x = np.linspace(0, 360, 1000)

# 计算 sin(x) 和 cos(x) 的值
y_sin = np.sin(np.radians(x))  # 将角度转换为弧度
y_cos = np.cos(np.radians(x))

# 创建一个图,并分为两个子图
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

# 在第一个子图中画 sin(x) 的曲线
ax1.plot(x, y_sin, label='sin(x)')
ax1.set_ylabel('sin(x)')
ax1.legend()
ax1.grid(True)

# 在第二个子图中画 cos(x) 的曲线
ax2.plot(x, y_cos, label='cos(x)')
ax2.set_xlabel('x (degrees)')
ax2.set_ylabel('cos(x)')
ax2.legend()
ax2.grid(True)

# 设置图的标题
fig.suptitle('Sin(x) and Cos(x) Curves')

# 显示图形
plt.show()

 1.

x = np.linspace(0, 360, 1000)

`np.linspace(start, stop, num)` 是 NumPy 库中的一个函数,用于生成一个等间隔的数组。具体来说,它生成一个包含 `num` 个元素的数组,这些元素均匀地分布在指定的起始值 `start` 和结束值 `stop` 之间。

在代码中,`x = np.linspace(0, 360, 1000)` 生成了一个包含 1000 个元素的数组 `x`,这些元素均匀地分布在 0 到 360 之间。这样做的目的是为了在绘制曲线时获取足够的数据点,以使曲线看起来更加平滑。

具体解释如下:
- `start` 参数是数组的起始值,这里是 0。
- `stop` 参数是数组的结束值,这里是 360。
- `num` 参数是生成的数组的元素个数,这里是 1000。

所以,`x` 数组包含了从 0 到 360 的 1000 个等间隔的数值,用于表示 x 轴上的坐标点。

2.

# 计算 sin(x) 和 cos(x) 的值
y_sin = np.sin(np.radians(x))  # 将角度转换为弧度
y_cos = np.cos(np.radians(x))

这一步是因为在 NumPy 中,`np.sin()` 和 `np.cos()` 函数中的角度参数默认是弧度而不是角度。因此,在计算正弦和余弦函数的值之前,我们需要先将角度转换为弧度。

通过使用 `np.radians()` 函数,我们可以将角度转换为弧度。所以 `y_sin = np.sin(np.radians(x))` 和 `y_cos = np.cos(np.radians(x))` 这两行代码将角度数组 `x` 转换为弧度,并分别计算了这些弧度对应的正弦和余弦值。

3.

# 创建一个图,并分为两个子图
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

这一行代码使用 Matplotlib 库的 `subplots` 函数创建了一个包含两个子图的图。具体来说,`subplots(2, 1, sharex=True)` 表示创建一个包含两行、一列的图,并且这两个子图共享相同的 x 轴。

`subplots(2, 1, sharex=True)` 中的参数表示创建一个包含两行一列的图,并且这两个子图共享相同的 x 轴。

具体来说:
- 第一个参数 `2` 表示创建两行。这意味着图中将有两个子图,一个位于上半部分,另一个位于下半部分。
- 第二个参数 `1` 表示创建一列。这意味着两个子图都在同一列中。
- `sharex=True` 表示这两个子图共享 x 轴。这意味着两个子图的 x 轴刻度和范围相同,使得它们在 x 轴方向上对齐。

这种设置常用于同时显示两个相关的图,例如两个函数的曲线,方便进行比较。在这个例子中,分别在上半部分和下半部分的子图中绘制了 `sin(x)` 和 `cos(x)` 的曲线。

希望这解释清楚了 `subplots` 参数的作用。如果还有其他问题,请随时提问。

- `fig` 是整个图的对象。
- `(ax1, ax2)` 是包含两个子图的轴对象的元组。
- `2` 表示两行,`1` 表示一列。
- `sharex=True` 表示这两个子图共享 x 轴。

这样设置的好处是,两个子图的 x 轴刻度是相同的,方便进行对比。

4.

# 在第一个子图中画 sin(x) 的曲线
ax1.plot(x, y_sin, label='sin(x)')
ax1.set_ylabel('sin(x)')
ax1.legend()
ax1.grid(True)

- `ax1.plot(x, y_sin, label='sin(x)')` 用于绘制 sin(x) 的曲线,其中 `x` 是角度数组,

角度数组是一个包含角度值的一维数组。角度用于度量角的大小,通常以度(°)为单位表示。在计算机科学中,角度通常使用弧度来进行计算和处理,但在可视化和绘图中,我们经常需要将角度作为输入。

在这个例子中,通过使用 `np.linspace(0, 360, 1000)` 创建了一个包含 1000 个等间隔的角度值的数组 `x`。这个数组表示了从 0 度到 360 度之间的角度的连续序列。通过使用这个角度数组 `x`,我们可以计算对应的正弦和余弦值来绘制出 sin(x) 和 cos(x) 的曲线。

需要注意的是,在进行数学计算和函数操作时,通常要求将角度值转换为弧度值。这是因为大多数数学函数(例如 `np.sin()` 和 `np.cos()`)默认使用弧度作为输入单位。在代码中使用了 `np.radians()` 函数将角度数组转换为弧度数组,以方便计算正弦和余弦函数的值。这样可以确保我们在计算函数值时使用正确的单位。

所以在这里,角度数组 `x` 是一个包含从 0 度到 360 度之间的等间隔角度值的一维数组,用于绘制曲线和进行函数计算。

`y_sin` 是相应的正弦值。`label='sin(x)'` 设置了曲线的标签,用于后续图例的显示。
- `ax1.set_ylabel('sin(x)')` 设置了 y 轴的标签为 'sin(x)'。
- `ax1.legend()` 添加图例,显示曲线的标签。
- `ax1.grid(True)` 添加网格,使图形更加清晰。

这样的设置使得第一个子图中包含了 sin(x) 的曲线,并有相应的标签和图例。后续的代码在第二个子图中完成了 cos(x) 的曲线的绘制和设置。

5.

# 在第二个子图中画 cos(x) 的曲线
ax2.plot(x, y_cos, label='cos(x)')
ax2.set_xlabel('x (degrees)')
ax2.set_ylabel('cos(x)')
ax2.legend()
ax2.grid(True)

这个其实就是复制上一步。

`ax2.set_xlabel('x (degrees)')` 这行代码是用于设置第二个子图 `ax2` 的 x 轴标签。具体来说,这行代码将 x 轴标签设置为字符串 'x (degrees)'。

因为上面没设置x的轴标签。

解释如下:
- `ax2` 表示第二个子图的轴对象。
- `set_xlabel('x (degrees)')` 是用于设置 x 轴标签的方法,其中 'x (degrees)' 是要显示的标签文本。

这样做的目的是为图形提供更清晰的标注,以便读者知道 x 轴代表的是角度,并且以度数为单位。这对于理解图形的含义非常有帮助。

6.

# 设置图的标题
fig.suptitle('Sin(x) and Cos(x) Curves')

# 显示图形
plt.show()

这个就比较简单啦

自己敲写代码

这是最后结果图

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,360,1000)
#度数化弧度,计算sin和cos的值
y_sin=np.sin(np.radians(x))
y_cos=np.cos(np.radians(x))
#建图,分为两个子图
fig,(ax1,ax2)=plt.subplots(2,1,sharex=True)
#第一个子图画sinx
ax1.plot(x,y_sin,label='sin(x)')
ax1.set_ylabel('sin(x)')
ax1.grid(True)
#cosx
ax2.plot(x,y_cos,label='cos(x)')
ax2.set_xlabel('x(degrees)')
ax2.set_ylabel('cos(x)')
ax2.grid(True)
#title
fig.suptitle('sin(x)和cos(x)')
plt.show()

 会发现matplotlib好像读不了中文。敲写时还是不熟悉,需要照着源代码的步骤一步步来,很艰难。

其中有一个疑问,set_ylabel这个是内置函数嘛?

`set_ylabel` 是 Matplotlib 中的内置函数。它用于设置图形对象中 y 轴的标签。通过调用 `ax.set_ylabel(label)` 函数,可以将指定的标签文本应用于 y 轴。

在之前的示例代码中,我们使用了 `ax2.set_ylabel('sin(x)')` 和 `ax1.set_ylabel('cos(x)')` 这两行代码来设置第一个子图和第二个子图的 y 轴标签。这样做的目的是为图形提供更清晰的标注,以帮助读者理解数据的含义。`set_ylabel` 函数是 Matplotlib 中轴对象 `Axes` 的一个方法,可以用于对坐标轴进行各种设置,包括标签、刻度等。
这种题目感觉就是记忆方面,过程方面较艰难,但你让我自己现在再写,那我肯定还是很吃力的。

但真正的勇士,就是得直面惨淡的人生,正视淋漓的鲜血,来吧,开启我们的第三遍旅程!

自己再次敲写代码

还要记得调一下那个1000,看看会有什么神奇的结果。最后需要加强plot函数的记忆,set_ylabel,set_xlabel的使用。

import numpy as np
import matplotlib.pyplot as plt

#x是自变量,所以先设置它
x=np.linspace(0,360,1000)
#y是因变量,需要将度转为弧度,然后计算y的值
y_sin=np.sin(np.radians(x))
y_cos=np.cos(np.radians(x))
#创建两个子图
fig,(ax1,ax2)=plt.subplots(2,1,sharex=True)
#sinx
ax1.plot(x,y_sin,label='sin(x)')
ax1.set_ylabel('sin(x)')
ax1.grid(True)
#cosx
ax2.plot(x,y_cos,label='cos(x)')
ax2.set_ylabel('cos(x)')
ax2.set_xlabel('x(degree)')
ax2.grid(True)
#title
fig.suptitle('sin(x)and cos(x)')
plt.show()

结束啦,撒花花~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值