In [7]:
import matplotlib.pyplot as plt
import numpy as np
#주피터 노트북에서 그래프를 표시
%matplotlib inline
In [90]:
#data 작성
np.random.seed(1)
x = np.arange(10)
y = np.random.rand(10)
plt.plot(x,y)
plt.show()
In [91]:
%reset
In [93]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def f(x):
return (x-2)*x*(x+2)
In [94]:
print(f(1))
In [95]:
print(f(np.array([1,2,3])))
In [96]:
x = np.arange(-3,3.5,0.5)
print(x)
In [97]:
x = np.linspace(-3,3,10)
print(np.round(x,2))
In [98]:
plt.plot(x,f(x))
plt.show()
In [99]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#함수 정의
def f2(x, w):
return (x-w)*x*(x+w)
# x를 정의
x = np.linspace(-3,3,100)
#차트를 묘사
plt.plot(x, f2(x, 2), color='black', label='$w=2$')
plt.plot(x, f2(x, 1), color='cornflowerblue', label='$w=1$')
plt.legend(loc ='upper left') #범례 표시
plt.ylim(-15,15) #y축의 범위
plt.title('$f_2(x)$') # 제목
plt.xlabel('$x$')
plt.ylabel('$y$')
plt.grid(True)
plt.show()
In [100]:
import matplotlib
matplotlib.colors.cnames
Out[100]:
그래프 여러개 보여주기¶
- subplot
- plt.subplot(n1,n2,n)
- n1 : 전체 그림의 세로 개수
- n2 : 전체 그림의 가로 개수
- n : 현재 그림의 위치 (왼쪽 위부터 오른쪽으로 1,2,3....)
(**0이 아니고 1부터 시작**)
In [112]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,5)) #figure 지정(그림의 크기를 지정)
plt.subplots_adjust(wspace=0.5, hspace=0.3) #그래프 간 간격지정
for i in range(6):
plt.subplot(2,3,i+1) #그래프의 위치지정// 맨 마지막은 번호
plt.title(i+1)
plt.plot(x,f2(x,i),'k')
plt.ylim(-25,25)
plt.grid(True)
plt.show()
In [141]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def f3(x0,x1):
r = 2 * x0**2 + x1**2
ans = r * np.exp(-r)
return ans
xn = 9
x0 = np.linspace(-2,2,xn)
x1 = np.linspace(-2,2,xn)
y = np.zeros((len(x0),len(x1)))
for i0 in range(xn):
for i1 in range(xn):
y[i0,i1] = f3(x0[i0],x1[i1])
In [142]:
print(x0)
print(x1)
In [143]:
print(np.round(y,1))
In [144]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(7,5)) #2D
plt.gray()
plt.pcolor(y)
plt.colorbar()
plt.show()
surface¶
In [145]:
from mpl_toolkits.mplot3d import Axes3D
xx0,xx1 = np.meshgrid(x0,x1)
plt.figure(figsize=(5,3.5)) #3D
ax = plt.subplot(1,1,1,projection='3d')
#plot_surface(x값,y값,z값,row step size 1이면 전부 표시, 2이면 1칸씩 띄워서 표시, column step size rstride와 동일, alpha는 투명도 1이면 투명하지않음, color, edagecolor는 선의 색)
ax.plot_surface(xx0,xx1,y,rstride=1,cstride=1,alpha=0.3,color='blue',edgecolor='black')
ax.set_zticks((0,0.2)) # z의 눈금을 0.~0.2로 제한
ax.view_init(75,-95) # ax.view_init(인수1,인수2)
plt.show() # 인수1 : 상하회전 각도(0:옆/90/위)
# 인수2 : 좌우 회전각도 양수(시계방향)
In [147]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
xn = 50
x0 = np.linspace(-2,2,xn)
x1 = np.linspace(-2,2,xn)
y = np.zeros((len(x0),len(x1)))
for i0 in range(xn):
for i1 in range(xn):
y[i0, i1] = f3(x0[i0], x1[i1])
xx0, xx1 = np.meshgrid(x0,x1)
plt.figure(1, figsize= (4,4))
#숫자 5는 등고선의 높이를 5단계로 지시
cont = plt.contour(xx0,xx1,y,5, colors='black')
#plt.contour의 반환값을 cont에 저장하고 cont.clabel로 출력
cont.clabel(fmt='%3.2f',fontsize=8)
plt.xlabel("$x_0$", fontsize=14)
plt.ylabel("$x_1$", fontsize=14)
plt.show()
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important; }</style>"))
In [ ]:
'Python' 카테고리의 다른 글
Python pandas 음식점 예제 (0) | 2020.09.09 |
---|---|
08.Python Pandas (0) | 2020.09.09 |
06.Python(Numpy 행렬) (0) | 2020.09.08 |
05.Python Numpy (0) | 2020.09.07 |
04.Python Class,Lambda 함수 (0) | 2020.09.07 |
댓글