Deep Learning/Natural Language Processing

[python] 데이터 시각화_matplotlib

frances._.sb 2022. 2. 10. 10:24
728x90

데이터 분석에 있어서 데이터 시각화는 매우 효과적인 수단입니다. matplotlib 라이브러리에는 데이터를 시각화하는 많은 기능이 들어 있습니다. 'matplotlib.pyplot.plot(x축에 대응하는 데이터, y축에 대응하는 데이터)'를 이용하면 그래프의 x축과 y축에 데이터를 간단히 대응시켜 차트를 만들 수 있습니다.

 

 

Example.

- 3x2의 그래프 레이아웃을 만들어 상단에는 왼쪽부터 순서대로 𝑦=𝑥, 𝑦=𝑥^2, 𝑦=𝑥^3 의 그래프를, 하단에는 왼쪽부터 순서대로 𝑦=𝑠𝑖𝑛(𝑥), 𝑦=𝑐𝑜𝑠(𝑥), 𝑦=𝑡𝑎𝑛(𝑥) 의 그래프를 플롯하세요.

- 각각의 서브플롯에 적절한 제목을 붙이고, 그리드를 표시하세요.

- 상단에는 _upper가 붙은 변수를, 하단에는 _lower가 붙은 변수를 사용하세요.

- 𝑦=𝑡𝑎𝑛(𝑥) 만 범위가 다르므로 _tan이 붙은 변수를 대신 사용하세요.

 

#matplotlib.pyplt을 plt로 import 합니다.
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

x_upper = np.linspace(0,5)
x_lower = np.linspace(0,2*np.pi)
x_tan = np.linspace(-np.pi/2,np.pi/2)
positions_upper = [i for i in range(5)]
positions_lower = [0, np.pi/2,np.pi,np.pi*3/2,np.pi*2]
positions_tan = [-np.pi/2,0,np.pi/2]
labels_upper = [i for i in range(5)]
labels_lower = ["0˚","90˚","180˚","˚270˚","360˚"]
labels_tan = ["-90˚","0","90˚"]

#Figure 객체를 만듭니다.
fig = plt.figure(figsize=(9,6))

#3x2 레이아웃으로 여러 함수의 그래프를 플롯하세요.
#서브플롯이 서로 겹치지 않도록 설정합니다.
plt.subplots_adjust(wspace=0.4,hspace=0.4)

#상단의 서브플롯을 만듭니다.
for i in range(3):
    y_upper = x_upper**(i+1)
    ax = fig.add_subplot(2,3,i+1)
    
    #서브플롯 ax 그래프에 그리드를 표시합니다.
    ax.grid(True)
    
    #서브플롯 ax 그래프의 제목을 설정합니다.
    ax.set_title("$y=x^%i$" % (i+1))
    
    #서브플롯 ax 그래프의 x축과 y축 이름을 설정합니다.
    ax.set_xlabel("$x-axis")
    ax.set_ylabel("$y-axis")
    
    #서브플롯 ax 그래프의 x축에 눈금을 설정합니다.
    ax.set_xticks(positions_upper)
    ax.set_xticklabels(labels_upper)
    
    #데이터 x,y를 그래프에 플롯합니다.
    ax.plot(x_upper,y_upper)
    
#하단의 서브플롯을 만듭니다.
#사용할 함수와 제목을 리스트에 미리 넣은 뒤 for 문으로 처리합니다.
y_lower_list = [np.sin(x_lower),np.cos(x_lower)]
title_list = ["$y=sin(x)$","$y=cos(x)$"]
for i in range(2):
    y_lower = y_lower_list[i]
    ax = fig.add_subplot(2,3,i+4)
    
    #서브플롯 ax 그래프에 그리드를 표시합니다.
    ax.grid(True)
    
    #서브플롯 ax 그래프의 제목을 설정합니다.
    ax.set_title(title_list[i])
    
    #서브플롯 ax 그래프의 x축과 y축 이름을 설정합니다.
    ax.set_xlabel("x-axis")
    ax.set_ylabel("y-axis")
    
    #서브플롯 ax 그래프의 x축에 눈금을 설정합니다.
    ax.set_xticks(positions_lower)
    ax.set_xticklabels(labels_lower)
    
    #데이터 x,y를 그래프에 플롯합니다.
    ax.plot(x_upper,y_upper)
    
#y=tan(x) 그래프의 플롯
ax = fig.add_subplot(2,3,6)

#서브플롯 ax 그래프에 그리드를 표시합니다.
ax.grid(True)
    
#서브플롯 ax 그래프의 제목을 설정합니다.
ax.set_title("$y=tan(x)$")

#서브플롯 ax 그래프의 x축과 y축 이름을 설정합니다.
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")

#서브플롯 ax 그래프의 x축에 눈금을 설정합니다.
ax.set_xticks(positions_tan)
ax.set_xticklabels(labels_tan)

#서브플롯 ax 그래프의 y축 범위를 설정합니다.
ax.set_ylim(-1,1)

#데이터 x,y를 그래프에 플롯합니다.
ax.plot(x_tan,np.tan(x_tan))

plt.show()

728x90
반응형

'Deep Learning > Natural Language Processing' 카테고리의 다른 글

Document Classification (vector space model)  (0) 2022.03.25
[python] 3D 그래프  (0) 2022.02.10
[python]Pandas  (0) 2022.02.09
[python]Numpy  (0) 2022.02.09
[python]Class  (0) 2022.02.09