기본 콘텐츠로 건너뛰기

라벨이 scatter인 게시물 표시

[matplotlib]quiver()함수

함수의 그래프

다음 그림들은 전자책 파이썬과 함께하는 미분적분 의 1장과 2장에 수록된 그래프들과 코드들입니다. import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") #그림 1.1.3 x=np.linspace(0, 2, 20) y=3-x**2 x1=np.linspace(2, 7, 20) y1=2*x1-6 plt.figure(figsize=(4, 3)) plt.plot(x, y, color="g", label=r"y=3-$x^2$") plt.plot(x1, y1, color="brown", label="y=2x-6") plt.hlines(4, 0, -3, color="orange", label="y=4") plt.scatter(0, 4, color="orange") plt.scatter(0, 3, color="white", edgecolors="k") plt.scatter(2, -1, color="g") plt.scatter(2, -2, color="white", edgecolors="k") plt.xlabel("x", fontsize="11") plt.ylabel("y", fontsize="11") plt.legend(loc="upper center", labelcolor=["g", "brown", "orange"], frameon=False) plt.show() #그림 2.1.1 x=np.linsp...

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

다음 그림들은 전자책 파이썬과 함께하는 미분적분 의 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...

함수의 그래프: 극값

다음 그림들은 전자책 파이썬과 함께하는 미분적분 의 5.4장에 수록된 그래프들과 코드들입니다. import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") #그림 5.4.1 a=symbols('a') f=a**3-3*a+2 x=np.linspace(-3, 3, 100) y=[f.subs(a, i) for i in x] df=f.diff(a) dy=[df.subs(a, i) for i in x] plt.figure(figsize=(4, 3)) plt.plot(x, y, color="g", label="f(x)") plt.plot(x, dy, ls="dashed", color="b", alpha=0.3, label=r"$\frac{df(x)}{dx}$") col=[("b", "f(-2): Lower Int"), ("r", "f(-1): critical)"),('r', "f(1): critical"), ('b', "f(1.5): Upper Int")] for i, j in enumerate([-2, -1, 1, 1.5]): plt.scatter(j, f.subs(a, j), s=50, c=col[i][0]) if j<0: plt.text(j+0.2, f.subs(a, j)+0.2, col[i][1], c=col[i][0]) else: plt.text(j+0.2, f.subs(a, j)-0.3, col[i][1], c=col[i][0]) plt.xlabel("x...

함수 그래프: 임계점 표시

다음 그래프들은 전자책 파이썬과 함께하는 미분적분 의 5.2 장에 소개된 그래프와 코드들입니다. import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") #그림 5.2.2 x=np.linspace(-.5, 6, 100) f=(x-2)**4+1 g=(x-2)**3+1 plt.figure(figsize=(4, 3)) plt.plot(x, f, color="g", label="f(x)") plt.plot(x, g, color="b", label="g(x)") plt.hlines(1, -0.5, 6, color="k", ls="--") plt.scatter(2, 1, s=50, c="r", label="crtical point") plt.xlabel("x", fontsize="11") plt.ylabel("y", rotation="horizontal", fontsize="11") plt.ylim((-11, 11)) plt.legend(loc="best", labelcolor=['g','b','r'], frameon=False) plt.show() #그림 5.2.3 a=symbols("a", real=True) f=3*a**5-20*a**2-1 df=f.diff(a) c=[float(i) for i in solve(df)] ddf=df.diff(a) x=np.linspace(-.5, 4, 100) fy=[f.subs(a, i) for i in x] ...

함수 그래프 그리기: 최대와 최소 찾기

작성된 그림은 전자책 파이썬과 함께하는 미분적분 에서 Chapter 5.1에서 소개한 여러 그래프들과 그 코드입니다. import numpy as np from sympy import * import matplotlib.pyplot as plt import seaborn as sns def tgline(slope, x0, y0, x): b=y0-slope*x0 re=slope*x+b return(re) def scantline(x0, y0, x1, y1, x): s, b=symbols("s, b") eq1=x0*s+b-y0 eq2=x1*s+b-y1 re=solve([eq1, eq2], (s, b)) re1=float(re[s])*x+float(re[b]) return(re1) CH 5.1 #그림 5.1.1 x=np.linspace(-4,4, 100) y=x**2 plt.figure(figsize=(4, 3)) plt.plot(x, y, color="g", label=r"f(x)=$x^2$") for i in np.arange(-3, 4): if i==-1: nme=r"$\frac{df(x)}{dx} < 0$" elif i==1: nme=r"$\frac{df(x)}{dx} \geq 0$" else: nme="" plt.plot(x, tgline(2*i, i, i**2, x), ls="--", alpha=0.5, color=['r' if i < 0 else 'b'][0], label=nme) plt.xlabel("x", loc="right", fontsize="11") plt.ylabel("y...

[matplotlib] 산점도(scatter plot)

산점도(scatter plot) 2차원 그래프의 기본 구성은 한 축(x)에 대한 값들에 대응하는 다른 축(y)의 값들입니다. 산점도는 대응하는 위치마다 표시를 하는 것으로 다음 함수를 적용합니다. plt.scatter(x, y, s, c, marker, label) x, y: data s: 표시(marker)의 크기, x, y, c외에 다른 변수를 지정하여 그 변수에 따라 크기를 조절할 수 있음 c: 표시 색, x, y, s외에 다른 변수를 지정하여 그 변수에 따라 색을 조절할 수 있음 다양한 marker label: 범례 import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import yfinance as yf import matplotlib as mpl import matplotlib.pyplot as plt plt.rcParams['font.family'] ='NanumGothic' plt.rcParams['axes.unicode_minus'] =False import seaborn as sns %matplotlib inline matplotlib하에서 작성된 플롯이지만 seaborn에서 제공하는 플롯의 스타일을 사용할 수 있습니다. 위 코드 sns.set_style() 함수에 의해 이루어집니다. np.random.seed(1) data=np.random.randn(100, 2) plt.figure(figsize=(4,3)) plt.scatter(data[:,0], data[:,1], s=10, c="b", label="random") plt.xlabel("x", loc="right") plt.ylabel("y", loc="top...

[matplotlib] 조각 함수 그리기

조각 함수(pairwise function) 작성 다음 함수 f(x)와 같이 일정한 구간별로 다른 값을 가지는 함수를 조각함수라고 합니다. $$f(x) =\begin{cases}4& \text{for}\; x\lt 0\\3-x^2& \text{for}\; 0\lt x \le 2\\ 2x-6& \text{for}\; x \gt 2\end{cases}$$ 선 그래프를 작성하기 위해 각 조건에 맞는 x와 y 값을 설정합니다. import numpy as np import matplotlib.pyplot as plt x=np.linspace(0, 2, 50) y=3-x**2 x1=np.linspace(2, 7, 50) y1=2*x1-6 x, y 축을 점 (0, 0)을 통과하도록 조정하기 위해 다음 함수를 적용합니다. plt.subplots(nrows=1, ncols=1, figsize=()) 여러개의 그래프를 그리기 위한 함수 그림들이 배열되는 구조는 nrows(행의 수), ncols(열의 수)로 지정 이 함수는 전체적인 그림을 위한 객체, 그 객체내에 각 그래프의 좌표의 수들을 반환 다음 코드는 1행, 1열로 1개의 그래프를 작성하므로 그림 객체를 나타내는 fig와 그 그래프의 좌표쌍을 나타내는 ax 객체를 반환 figsize=(가로, 세로), 그래프의 크기를 나타냄 fig, ax=plt.subplots(figsize=(4, 3)) ax.plot(x, y, color="g", label=r"y=3-$x^2$") ax.plot(x1, y1, color="brown", label="y=2x-6") .plot(x, y, color, ls, lw, label): x에 대응하는 y에 대한 선그래프를 작성 ls: linestyle , 선의 형태를 지정 ...

R 그래픽의 개요, plot(), 산점도와 선그래프

내용 개요 plot(): 산점도 제목과 라벨 격자 추가 여러개 산점도 작성 범례(legend) 산점도에 회귀선 추가 요인의 수준에 따른 산점도의 분리 선그래프 그래픽_plot()과 산점도 개요 R에서 그래프를 작성하는 함수는 고수준(high-level)과 저수준(low-level) 함수로 구분합니다. 고수준 함수는 새로운 그래프를 시작하며 축적, 제목과 라벨, 장식 등을 첨가할 수 있습니다. 반면에 저수준 함수는 새로운 그래프를 시작할 수 없으며 고수준 함수에 의해 생성된 그래프에 점, 선, 텍스트, 장식 등을 추가합니다. 고수준 함수 설명 저수준함수 설명 plot 제네릭(generic) 그래프 함수 points 점을 추가 boxplot 박스플롯 생성 lines 선을 추가 hist 히스토그램 생성 abline 직선을 추가 qqnorn Q-Q 플롯을 생성 segments 선분을 추가 curve 함수를 그래프로 작성 polygon 닫힌 다각형을 추가 coplot 조건화그래프 text 텍스트를 추가 barplot 막대그래프 새로운 그래프를 작성하기 위해서는 고수준함수를 호출한 후 저수준 함수를 작성합니다. 고수준 함수인 plot(x)은 전달하는 인자 x에 따라 생성되는 그래프 형상이 달라집니다. 즉, x가 벡터, 요인, 데이터프레임에 따라, 선형회귀 모형, 도수분포표 또는 다른 타입의 형태에 따라 다른 그래프를 생성합니다. 이것은 다형성(polymorphism) 이라고 합니다. 그러므로 제네릭함수인 plot을 다형함수라고 합니다. plot(): 산점도 두 열(column)로 으로 구성된 자료에 대해 plot()함수를 작성합니다. 데이터 cars는 두개의 열로 구성된 데이터 프레임입니다. 이...