Matplotlib绘制y=sqrt(x)从x从0到5的图像,按y轴平均取10个点
时间: 2024-09-20 13:18:06 浏览: 40
要在 Matplotlib 中绘制 $y=\sqrt{x}$ 从 $x=0$ 到 $x=5$ 的图像,并且在 $y$ 轴上均匀地选取10个点进行标记,你可以这样做:
首先,导入所需的库:
```python
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline, BSpline
```
然后,创建数据:
```python
x_values = np.arange(0, 5, 0.05) # 将 x 范围分为更小的步长,以便有更多点
y_values = np.sqrt(x_values)
```
接着,对 y 值进行均匀采样:
```python
y_interpolated = make_interp_spline(x_values, y_values, k=3) # 使用插值函数,k=3 表示三次多项式拟合
x_points = np.linspace(min(x_values), max(x_values), 10) # 在0到5之间取10个点
y_points = y_interpolated(x_points) # 这些点将是 y 平均取样的值
```
最后,绘制图形:
```python
plt.figure(figsize=(6, 4)) # 设置绘图尺寸
plt.plot(x_values, y_values, 'o', label='Original Data') # 绘制原始点
plt.plot(x_points, y_points, 'ro', markersize=8, label='Interpolated Points') # 在重要点处做红色大圆圈
plt.plot(x_points, y_points, '-') # 线性连接这些点
plt.xlabel('x')
plt.ylabel('y')
plt.title('y = sqrt(x) with evenly sampled points')
plt.legend()
plt.grid(True)
plt.show()
```
这里我们使用了 `make_interp_spline` 来构建一个光滑的插值函数,然后在指定的 x 坐标点上应用这个函数得到新的 y 值。
阅读全文