In [3]:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#주피터 노트북에서 그래프를 표시
In [4]:
#data작성
np.random.seed(1)
x= np.arange(10)
y= np.random.rand(10) # 0과 1사이의 값 10개
plt.plot(x,y)
plt.show()
In [5]:
%reset
In [12]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def f(x):
return(x-2)*x*(x+2)
In [7]:
print(f(1))
In [8]:
print(f(np.array([1,2,3])))
In [9]:
x= np.arange(-3,3.5,0.5)
print(x)
np.linespace(start,stop,num,endpoint=True)¶
- endpoint=True : stop으로 주어진 값을 포함시킴
- endpoint=False : stop으로 주어진 값을 포함시키지 않음
In [10]:
x=np.linspace(-3,3,10)
print(np.round(x,2))
In [11]:
plt.plot(x,f(x))
plt.show()
In [19]:
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)$') #제목 #$가 없으면 f_2(x)로 나옴
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()
In [29]:
import matplotlib
matplotlib.colors.cnames
Out[29]:
그래프 여러 개 보여주기¶
- subplot
- plt.subplot(n1, n2, n)
- n1: 전체 그림의 세로 개수
- n2: 전체 그림의 가로 개수
- n : 현재 그림의 위치 (왼쪽 위부터 오른쪽으로 1,2,3,...)
  : 0이 아니고 1부터 시작
In [83]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,5)) #figure 지정
plt.subplots_adjust(wspace=0.3, hspace=0.3) #그래프 간 간격지정
for i in range(6):
plt.subplot(2,3,i+1) #그래프의 위치 지정/ 2행 3열, 1번부터 시작
plt.title(i+1)
plt.plot(x, f2(x,i), color="hotpink")
plt.ylim(-25,25)
plt.grid(True)
plt.show()
In [34]:
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))) # 0으로 만들어줌
for i0 in range(xn):
for i1 in range(xn):
y[i1, i0]= f3(x0[i0], x1[i1])
In [27]:
print(x0)
In [28]:
print(y)
In [30]:
print(np.round(y,1))
In [45]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(7,5))
plt.gray()
plt.pcolor(y)
plt.colorbar()
plt.show()
In [46]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(7,5))
plt.pcolor(y,cmap='hot')
plt.colorbar()
plt.show()
surface¶
In [87]:
from mpl_toolkits.mplot3d import Axes3D
xx0,xx1 = np.meshgrid(x0,x1)
plt.figure(figsize=(5,3.5))
ax = plt.subplot(1,1,1,projection='3d')
ax.plot_surface(xx0,xx1,y,rstride=1,cstride=1,alpha=0.3,color='blue',edgecolor='black')
#(x값, y값, z값, row step size(1:전부표시, 2:한칸씩 띄워서표시), column step size, alpha=투명도, color, edgecolor=선의 색)
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 [90]:
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))
cont = plt.contour(xx0,xx1,y,6, colors='black')
#숫자 5는 등고선의 높이를 6단계로 지시
cont.clabel(fmt='%3.2f',fontsize=8)
#plt.contour의 반환값을 cont에 저장하고 cont.clabel로 출력
plt.xlabel("$x_0$", fontsize=14)
plt.ylabel("$x_1$", fontsize=14)
plt.show()
'Python' 카테고리의 다른 글
Python_pandas(판다스):시리즈,데이터프레임,색인,인덱싱,sorting (0) | 2020.09.09 |
---|---|
Python 기초09_vectorize (0) | 2020.09.08 |
Python 기초07_Numpy2 (0) | 2020.09.08 |
Python 기초06_Numpy (0) | 2020.09.07 |
Python 기초05 (0) | 2020.09.07 |