기본 콘텐츠로 건너뛰기

[matplotlib] 등고선(Contour)

함수의 변화 경향 작성

$\Delta x, \; \Delta y$ 그리기

다음 그림과 같이 곡선 그래프에 대한 일정한 구간에서 x축과 y축에서의 변화량을 나타내기 위한 그림을 작성합니다.
위 그림에서 곡선의 함수는 sympy 패키지를 사용하여 생성합니다. 다음은 $y=x^3$를 생성하기 위한 코드입니다.
x=symbols('x')
f=x**3; f
$\quad \color{navy}{\scriptstyle x^3}$ 이 함수의 그래프를 작성하면 다음과 같습니다.
a=np.linspace(-3, 3, 100)
b=[float(f.subs(x, i)) for i in a]
plt.figure(dpi=100)
plt.plot(a, b, label=r'$\mathbf{x^3}$')
plt.show()
위 함수에서 소구간들을 구분하고 각 구간에서 다음 그림과 같이 작성합니다.
plt.figure(dpi=100)
a1=np.linspace(-3, 3, 10)
b1=[float(f.subs(x, i)) for i in a]
for i in range(1, 10):
    plt.plot([a1[i-1], a1[i]], [b1[i-1], b1[i-1]])
    plt.plot([a1[i], a1[i]], [b1[i-1], b1[i]])
plt.show()
위 두 그래프를 결합하기 위해 다음 함수를 작성합니다. 이 결과는 첫번째 그래프가 됩니다.
def deltaFigure(x, x1, func, symbol):
    x=x
    y=[float(func.subs(symbol, i)) for i in x]
    x1=x1
    y1=[float(func.subs(symbol, i)) for i in x1]
    plt.plot(x, y)
    n=0
    for i in range(1, len(x1)):
        if i==1:
            plt.plot([x1[i-1], x1[i]],[y1[i-1], y1[i-1]], '--', color="red", label=r'$\mathbf{\Delta x}$')
            plt.plot([x1[i], x1[i]],[y1[i-1], y1[i]], '--', color="blue", label=r'$\mathbf{\Delta y}$')
        else:
            plt.plot([x1[i-1], x1[i]],[y1[i-1], y1[i-1]], '--', color="red")
            plt.plot([x1[i], x1[i]],[y1[i-1], y1[i]], '--', color="blue")
    plt.legend(loc='best')
    plt.axhline(0, color="k", linewidth=1, alpha=0.5)
    plt.axvline(0, color="k", linewidth=1, alpha=0.5)
    plt.xlabel("x", size=12, weight="bold")
    plt.ylabel("y", size=12, weight="bold")
    plt.show()

댓글