主要两个部分。
1、 函数拟合问题,测试的时候用到了就加上了
2、 plt 的label 标签不起作用的情况
plt label 标签不起作用,是需要添加 ,并附上所有代码。
plt.legend() # 显示标签
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x ** 2 + 1
def f_fit(x, y_fit):
a, b, c = y_fit.tolist()
return a * x ** 2 + b * x + c
x = np.linspace(-5, 5)
y = f(x) + np.random.randn(len(x)) # 加入噪音
y_fit = np.polyfit(x, y, 2) # 二次多项式拟合
y_show = np.poly1d(y_fit) # 函数优美的形式
print(y_show) # 打印
y1 = f_fit(x, y_fit)
plt.figure(figsize=(12.8, 7.24))
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体(因为matplotlib默认为英文字体,汉字会使其乱码)
plt.rcParams['axes.unicode_minus'] = False # 可显示‘-’负号
plt.plot(x, f(x), 'r', label='original')
plt.scatter(x, y, c='g', label='before_fig') # 散点图
plt.plot(x, y1, 'b--', label='fitting')
plt.title('polyfitting')
plt.xlabel('x')
plt.ylabel('y')
plt.legend() # 显示标签
plt.show()
需要保存为png图片,使用以下代码即可,不过需要将 plt.show() 屏蔽掉.
plt.savefig("XXX.png",format='png', bbox_inches='tight', dpi=450)
#plt.show()