기본 콘텐츠로 건너뛰기

[matplotlib] 등고선(Contour)

함수의 그래프: 최소제곱법

다음 그림들은 전자책 파이썬과 함께하는 미분적분의 8장에 수록된 그래프들과 코드들입니다.

import numpy as np 
import pandas as pd
from sympy import *
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
#그림 8.4.1
x=np.array([1.,2.,3.,4.])
y0=np.array([5.2, 8.9, 11.7, 16.8])
y=3.76*x+1.25
y1=3.96*x+1
y2=3.36*x+1.2
plt.figure(figsize=(8, 3))
plt.subplot(121)
col=['g', 'b', 'r']
for i,j in enumerate([y, y1, y2]):
    if i>0:
        l="--"
    else:
        l="-"
    plt.plot(x, j, color=col[i], ls=l, label=f"fit{i+1}")
plt.scatter(x, y0, s=50, c="brown", label="observed")
plt.xlabel("x", fontsize=11)
plt.ylabel("f(x)", rotation="horizontal",labelpad=10, fontsize=11)
plt.legend(loc=(0.1, 0.6), labelcolor="linecolor", frameon=False)
plt.subplot(122)
plt.plot(x, y, color="g", label="reg. line")
plt.scatter(x, y, s=50, c="b", label="predicted")
plt.scatter(x, y0, s=50, c="brown", label="observed")
plt.legend(loc=(0.1, 0.6), labelcolor="linecolor", frameon=False)
plt.show()
#그림 8.6.1
x=np.linspace(0, 5, 100)
g1=4-4*x/5
g2=np.repeat(4, 100)
plt.figure(figsize=(4,3))
plt.fill_between(x, g1, g2, color="g", alpha=0.3, label="area=0.5")
plt.arrow(2, 2, 0, 2.3, color="b", head_width=0.1)
plt.text(1.1, 1.5, r"$g_1(x)=4-\frac{4}{5}x$")
plt.text(1.2, 4.5, r"$g_2(x)=4$")
plt.xlabel("x", fontsize=11)
plt.ylabel("f(x)", rotation="horizontal", labelpad=10, fontsize=11)
plt.ylim((0, 5.5))
plt.show()

댓글