Python-案例分析-函数间颜色填充


前言

学习笔记。
结合实例解析代码。


一、案例-01-函数图像间隙填充

1.1、代码

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.family']='simhei'
plt.rcParams['axes.unicode_minus']=False

# 构造x坐标
x = np.arange(0.0, 2, 0.01)
# 构造y1曲线的y坐标
y1 = np.sin(2 * np.pi * x)
# 构造y2曲线的y坐标
y2 = 0.8 * np.sin(4 * np.pi * x)

fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=(6, 6))
# 参数y2 默认值为0
ax1.fill_between(x, y1)
ax1.set_title('填充y1与0之间的区域')
# 参数y2 的值为标量1
ax2.fill_between(x, y1, 1)
ax2.set_title('填充y1与0之间的区域')

ax3.fill_between(x, y1, y2)
ax3.set_title('填充y1与y2之间的区域')
ax3.set_xlabel('x')

plt.show()

在这里插入图片描述

1.2、分析

1.2.1、plt.rcParams

plt.rcParams['font.family']='simhei'
plt.rcParams['axes.unicode_minus']=False

可以初步的认为这仅仅只是一个常规设置,方便更好的设计函数图片。
内里的设置可以不考虑。

资源:

1.2.2、plt.subplots

fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=(6, 6))

资源:

1.2.3、plt.figure

资源:

1.2.3.1、figure语法

(1)figure语法说明

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num:图像编号或名称,数字为编号 ,字符串为名称
  • figsize:指定figure的宽和高,单位为英寸;
  • dpi:参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框
matpltlib.pyplot.figure(
num = None,               # 设定figure名称。系统默认按数字升序命名的figure_num(透视表输出窗口)e.g. “figure1”。可自行设定figure名称,名称或是INT,或是str类型;
figsize=None,             # 设定figure尺寸。系统默认命令是rcParams["figure.fig.size"] = [6.4, 4.8],即figure长宽为6.4 * 4.8;
dpi=None,                 # 设定figure像素密度。系统默命令是rcParams["sigure.dpi"] = 100;
facecolor=None,           # 设定figure背景色。系统默认命令是rcParams["figure.facecolor"] = 'w',即白色white;
edgecolor=None, frameon=True,    # 设定要不要绘制轮廓&轮廓颜色。系统默认绘制轮廓,轮廓染色rcParams["figure.edgecolor"]='w',即白色white;
FigureClass=<class 'matplotlib.figure.Figure'>,   # 设定使不使用一个figure模板。系统默认不使用;
clear=False,                     # 设定当同名figure存在时,是否替换它。系统默认False,即不替换。
**kwargs)
1.2.3.1、figure例子

例子1——figsizefacecolor

import matplotlib.pyplot as plt
plt.rcParams['font.family']='simhei'
plt.rcParams['axes.unicode_minus']=False
#创建自定义图像
fig=plt.figure(figsize=(4,3),facecolor='blue')
plt.show()

在这里插入图片描述


例子2——num

fig=plt.figure(num='图一',figsize=(4,3),facecolor='blue')

在这里插入图片描述


1.2.4、np.arange()函数

资源:

1.2.5、fill_between()函数

资源:

fill_between函数 fill_between函数的签名为:matplotlib.pyplot.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)

参数说明如下:

  • x:定义两条曲线的节点的x坐标。长度为N的类数组结构。必备参数。
  • y1:定义曲线的节点的y坐标。长度为N的类数组结构或者标量。必备参数。
  • y2:定义第2条曲线的节点的y坐标。长度为N的类数组结构或者标量,默认值为0。可选参数。
  • where:根据条件排除一些填充区域。长度为N的布尔数组。默认值为None。可选参数。
  • interpolate:当该属性为True时将计算实际交点,并将填充区域延伸到此点。布尔值。默认值为False。注意:该属性只有使用了where属性且两条曲线相互交叉时才生效。
  • step:拐点的计算方式。字符串,取值范围为{'pre', 'post', 'mid'}。默认值为None。可选参数。
  • **kwargsPolyCollection对象的相关属性。 fill_between函数的返回值为PolyCollection对象。

注意事项: 建议xy1y2使用数组结构,这样where参数的应用更加灵活。
两条曲线分别由(x,y1)(x,y2)定义。两条曲线具有相同的x坐标。 两个曲线之间的填充区域可能有多个。
通过where参数可以排除一些填充区域。 默认直接连接给定点构成曲线。可以使用step函数改变连接点。


二、案例-02-置信带

2.1、代码

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.family']='simhei'
plt.rcParams['axes.unicode_minus']=False

x = np.linspace(0, 10, 11)
y = [3.9, 4.4, 10.8, 10.3, 11.2, 13.1, 14.1,  9.9, 13.9, 15.1, 12.5]

# 拟合曲线,并估计其y值及误差。
a, b = np.polyfit(x, y, deg=1)
y_est = a * x + b
y_err = x.std() * np.sqrt(1/len(x) +
                          (x - x.mean())**2 / np.sum((x - x.mean())**2))

# 绘制拟合线
plt.plot(x, y_est, '-')
# 填充置信带
plt.fill_between(x, y_est - y_err, y_est + y_err, alpha=0.2)
# 绘制数据点
plt.plot(x, y, 'o', color='tab:brown')
plt.show()

在这里插入图片描述

2.2、分析

2.2.1、np.linspace()函数

资源:

np.linspace(start = 0, stop = 100, num = 5)

代码生成 NumPy 数组 (ndarray 对象),结果如下:array([ 0., 25., 50., 75., 100.])
在这里插入图片描述

2.2.2、np.polyfit()函数

Numpy的polyfit()函数是一个用于多项式拟合的工具。它可以根据一组给定的数据点以及多项式的阶数,计算出最小二乘意义下的多项式拟合系数。

资料:
多项式拟合一般方程法详细推导


基本语法
Numpypolyfit()函数有三个参数:

numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)

  • x:输入的自变量数据,一般是一个有序的一维数组。
  • y:输入的因变量数据,一般也是一个有序的一维数组。
  • deg:要拟合的多项式的阶数。
    该函数返回一个一维数组,包含多项式拟合系数,从高到低依次排列。

例子

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 20)
y = np.sin(x)
# 对这组数据进行三次多项式拟合
p = np.polyfit(x, y, 2)
print("y=",y)
print("p=",p)

在这里插入图片描述

2.2.3、std()函数

std()常用于机器学习中的标准化数据操作,可用于计算给定数组沿指定轴线的标准差。

其语法如下:
numpy.std(arr, axis=None, dtype=float64)
arr表示输入的数据,可以是一维数组或二维数组。

axis表示需要计算标准差的轴。

  • axis=0表示沿列计算标准差,
  • axis=1表示沿行计算标准差

dtype表示计算标准差时使用的数据类型

例子-01

#二维数组按列求标准差
import numpy as np
arr = [[1, 2, 3],[1, 2, 3],[1, 2, 3]]
print("二维数组 :", arr)
print("标准差 ", np.std(arr,axis=1))

在这里插入图片描述
例子-02

#二维数组按列求标准差
import numpy as np
arr = [[1, 2, 3],[1, 2, 3],[1, 2, 3]]
print("二维数组 :", arr)
print("标准差 ", np.std(arr,axis=0)

在这里插入图片描述

2.2.4、sqrt() 函数

sqrt()方法返回数字x的平方根。

语法
sqrt() 方法的语法: python import math math.sqrt( x )

返回值
返回数字x的平方根。

2.2.5、len()函数

Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。

语法 len()方法语法:len( s )

参数 s – 对象。

返回值 返回对象长度。

实例

str = "runoob"
print(len(str))  # 字符串长度

l = [1, 2, 3, 4, 5]
print(len(l))  # 列表元素个数

在这里插入图片描述

2.2.6、mean()函数

Python statistics.mean() 用于计算给定数据集的算术平均值(均值)。

语法 statistics.mean() 方法语法如下: statistics.mean(data)
参数说明: data – 包含数值的可迭代对象,例如列表或元组。
返回值 函数计算并返回数据集的算术平均值 作为结果。

实例

import numpy as np
x = np.linspace(0, 10, 11)

print(x.mean())

在这里插入图片描述

2.2.7、sum()函数

sum() 方法对序列进行求和计算。

语法 以下是 sum() 方法的语法: sum(iterable[, start])
参数 iterable – 可迭代对象,如:列表、元组、集合。 start – 指定相加的参数,如果没有设置这个值,默认为0。
返回值 返回计算结果。

实例

a=sum([0,1,2])  
b=sum((2, 3, 4), 1)        # 元组计算总和后再加 1
c=sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
print('a=',a)
print('b=',b)
print('c=',c)

在这里插入图片描述

三、案例-03-拟合一组sin函数数据

3.1、代码

import numpy as np
import matplotlib.pyplot as plt

# 创建一组sin函数的数据点
x = np.linspace(-np.pi, np.pi, 20)
y = np.sin(x)

# 对这组数据进行三次多项式拟合
p = np.polyfit(x, y, 3)

# 绘制拟合的多项式曲线
t = np.linspace(-np.pi, np.pi, 100)
plt.plot(x, y, 'bo', label='data')
plt.plot(t, np.polyval(p, t), '-k', label='fit')

plt.legend()
plt.show()

在这里插入图片描述

3.2、分析

3.2.1、np.polyval()函数


polyval() 函数的语法如下:

numpy.polyval(p, x)
  • p是多项式系数。
  • x 是自变量。

例子
一个一元二次方程 y = 3 x 2 + 2 x + 1 y=3x^2+2x+1 y=3x2+2x+1,现在需要求 x 为 2、3、4 时的 y 值。

import numpy as np

# 定义多项式系数
p = [3, 2, 1]

# 定义自变量
x = [2, 3, 4]

# 计算多项式在 x 处的值
y = np.polyval(p, x)

print(y)

在这里插入图片描述
在该例子中p也可以等于np.polyfit(x, y, 3),即p = np.polyfit(x, y, 3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值