Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

차근차근

matplotlib 본문

대학교/Data

matplotlib

SWKo 2020. 2. 1. 01:36
20200131practice2
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))
In [3]:
import numpy as np
import pandas as pd
import matplotlib, matplotlib.pyplot as plt
In [4]:
import warnings
warnings.filterwarnings('ignore')
In [5]:
# 그래프를 그린다 데이터와 함께
plt.plot()
Out[5]:
[]
In [ ]:
df.plot() # 데이터를 가지고 그래프를 그린다.
ax.plot() # subplot에 그래프를 그린다.
In [8]:
plt.plot(pd.Series([1,2,3,4,5]),
         pd.Series([1111,2222,3333,4444,2222]))
Out[8]:
[<matplotlib.lines.Line2D at 0x124595910>]
In [9]:
# 기본 옵션
"""
label : 범례 이름
ax, graph : 서브 플롯, 내부 그래프
style : ggplot - 테마(선택가능, 인터넷에서 제공되는 테마도 적용 가능)
alpha : 투명도
kind : 그래프의 종류 - line, bar, barh
rot : 눈금 - 축에 표시되는 데이터
xtick, ytick : 축에 사용되는 값
xlim, ylim : 축에 표시될 데이터의 범위
grid : 격자표시
"""
Out[9]:
'\nlabel : 범례 이름\nax, graph : 서브 플롯, 내부 그래프\nstyle : ggplot - 테마(선택가능, 인터넷에서 제공되는 테마도 적용 가능)\nalpha : 투명도\nkind : 그래프의 종류 - line, bar, barh\nrot : 눈금 - 축에 표시되는 데이터\nxtick, ytick : 축에 사용되는 값\nxlim, ylim : 축에 표시될 데이터의 범위\ngrid : 격자표시\n'
In [ ]:
# 기본 옵션
"""
label : 범례 이름
ax, graph : 서브 플롯, 내부 그래프
style : ggplot - 테마(선택가능, 인터넷에서 제공되는 테마도 적용 가능)
alpha : 투명도
kind : 그래프의 종류 - line, bar, barh
rot : 눈금 - 축에 표시되는 데이터
xtick, ytick : 축에 사용되는 값
xlim, ylim : 축에 표시될 데이터의 범위
grid : 격자표시
"""
In [11]:
plt.plot(np.random.rand(50).cumsum())
Out[11]:
[<matplotlib.lines.Line2D at 0x1248dbcd0>]
In [24]:
np.random.rand(50).cumsum()
Out[24]:
array([ 0.14646429,  0.73141927,  1.69860783,  2.51334324,  2.84171457,
        3.65877037,  3.92915464,  4.23911148,  5.04198441,  5.53772008,
        6.17755149,  6.72416559,  7.10784959,  7.24027451,  7.40665344,
        7.52471795,  8.04299294,  8.42418453,  9.17808231,  9.70015068,
        9.94458916, 10.50545541, 11.47722668, 11.69292016, 12.12841608,
       12.35749179, 12.67442808, 12.92785733, 13.90051095, 13.92014678,
       14.88401886, 15.01767792, 15.96364708, 16.22489451, 16.64935765,
       17.46522621, 17.62781556, 18.3741277 , 19.37225468, 19.65312319,
       20.01791104, 20.89690257, 21.58661975, 21.61838851, 21.86793078,
       22.38018693, 23.11213961, 23.14721787, 23.87935366, 23.95982756])
In [13]:
# 옵션 없이 값만 가지고 표시
plt.plot(np.random.rand(50).cumsum())
Out[13]:
[<matplotlib.lines.Line2D at 0x124a8d510>]
In [12]:
plt.plot(np.random.rand(50).cumsum(), 'k') # k: 검은선
Out[12]:
[<matplotlib.lines.Line2D at 0x1249be1d0>]
In [14]:
plt.plot(np.random.rand(50).cumsum(), 'r') # r: 빨간선
Out[14]:
[<matplotlib.lines.Line2D at 0x124aec8d0>]
In [15]:
plt.plot(np.random.rand(50).cumsum(), 'r--') # r-- : 삘간 점선
Out[15]:
[<matplotlib.lines.Line2D at 0x124c24610>]
In [17]:
plt.plot(np.random.rand(50).cumsum(), 'r^--') # ^: 마커 종류
Out[17]:
[<matplotlib.lines.Line2D at 0x124dc5cd0>]
In [22]:
plt.plot(np.random.rand(50).cumsum(), 'go--')
Out[22]:
[<matplotlib.lines.Line2D at 0x1251e4d50>]
In [23]:
# 그리드 추가하기
plt.grid(True)
plt.plot(np.random.rand(50).cumsum(), 'k--')
Out[23]:
[<matplotlib.lines.Line2D at 0x1253282d0>]
In [28]:
# draw style
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--')
plt.plot(data, 'r-', drawstyle="steps-pre")
plt.plot(data, 'b', drawstyle="steps-post")
Out[28]:
[<matplotlib.lines.Line2D at 0x1256a3d90>]
In [ ]:
 
In [35]:
# 범례 표시하기
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(loc='best') # 어지간하면 best로 사용
Out[35]:
<matplotlib.legend.Legend at 0x125c18810>
In [43]:
# 범례의 위치를 좌표값으로 지정하는 방법
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(bbox_to_anchor=(1.3,1.0))
Out[43]:
<matplotlib.legend.Legend at 0x12628d390>
In [50]:
# 표시되는 데이터의 범위를 제한하는 법
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(bbox_to_anchor=(1.3,1.0))
plt.xlim([20,40])
plt.ylim([10,20])
Out[50]:
(10, 20)
In [57]:
# 축에 표시되는 레이블 변경
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(bbox_to_anchor=(1.3,1.0))
plt.xlim([20,40])
plt.xticks([20,25,30,35,40], ['A','B','C','D','E'], rotation=30)
plt.ylim([10,20])
Out[57]:
(10, 20)
In [56]:
# 그래프의 타이틀 설정하기
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(bbox_to_anchor=(1.3,1.0))
plt.xlim([20,40])
plt.xticks([20,25,30,35,40], ['A','B','C','D','E'], rotation=30)
plt.ylim([10,20])
plt.title('show Data Graph')
Out[56]:
Text(0.5, 1.0, 'show Data Graph')
In [58]:
# 그래프의 레이아웃 설정
data = np.random.rand(50).cumsum()
plt.plot(data, 'k--', label="Default")
plt.plot(data, 'r-', drawstyle="steps-pre", label="Pre")
plt.plot(data, 'b', drawstyle="steps-post", label="Post")
plt.legend(bbox_to_anchor=(1.3,1.0))
plt.xlim([20,40])
plt.xticks([20,25,30,35,40], ['A','B','C','D','E'], rotation=30)
plt.ylim([10,20])
plt.title('show Data Graph')
plt.tight_layout() # 여백을 적게써서 그래프가 크게
In [75]:
# 1. 데이터 랜덤한 숫자값 30개가 들어있는 데이터
# 2. 데이터 변수는 두개
# 3. 1) 데이터는 선 : 검정, 선 모양 --
#    2) 데이터는 선 : 파랑, 선 모양 : 기본
# 4. x축 제목 : 시작 시기
#    y축 제목 : 성취도
# 5. 그래프 제목 : 시작 시기에 따른 성취도
# 6. legend : best 위치, 1) A군, 2)B군
# 7. 표시 범위 x 축 레이블 [Start, Mid, End]
# 8. x 축 레이블 90도 회전시켜서 표시
plt.rc('font', family='AppleGothic')
data1 = np.random.rand(30).cumsum()
data2 = np.random.rand(30).cumsum()
plt.plot(data1, 'k--', label="A군")
plt.plot(data2, 'b', label="B군")
plt.xlabel("시작시기")
plt.ylabel("성취도")
plt.title("시작 시기에 따른 성취도")
plt.legend(loc='best')
plt.xticks([0,15,30],['Start','Mid','End'], rotation=90)
Out[75]:
([<matplotlib.axis.XTick at 0x127ae2b90>,
  <matplotlib.axis.XTick at 0x127ae27d0>,
  <matplotlib.axis.XTick at 0x127ae2510>],
 <a list of 3 Text xticklabel objects>)
In [76]:
# 1. 데이터 랜덤한 숫자값 30개가 들어있는 데이터
# 2. 데이터 변수는 두개
# 3. 1) 데이터는 선 : 검정, 선 모양 --
#    2) 데이터는 선 : 파랑, 선 모양 : 기본
# 4. x축 제목 : 시작 시기
#    y축 제목 : 성취도
# 5. 그래프 제목 : 시작 시기에 따른 성취도
# 6. legend : best 위치, 1) A군, 2)B군
# 7. 표시 범위 x 축 레이블 [Start, Mid, End]
# 8. x 축 레이블 90도 회전시켜서 표시
plt.rc('font', family='AppleGothic')
fig = plt.figure(figsize=(12,6))
graph = fig.add_subplot(1,1,1)
data_first = np.random.rand(30).cumsum()
data_second = np.random.rand(30).cumsum()
plt.plot(data_first, 'k--', label="A군")
plt.plot(data_second, 'b', label="B군")
plt.title("시작 시기에 따른 성취도")
graph.set_xlabel("시작 시기")
graph.set_ylabel("성취도")
plt.legend(loc='best')
plt.xlim([0,30])
plt.xticks([0,15,30],['Start','Mid','End'], rotation=90)
Out[76]:
([<matplotlib.axis.XTick at 0x1287717d0>,
  <matplotlib.axis.XTick at 0x128771390>,
  <matplotlib.axis.XTick at 0x128817890>],
 <a list of 3 Text xticklabel objects>)
In [ ]:
 

'대학교 > Data' 카테고리의 다른 글

우한 코로나 바이러스 데이터 분석  (0) 2020.02.01
selenium  (0) 2020.02.01
Kaggle [Titanic Data Analysis]  (0) 2020.02.01
json  (0) 2020.01.30
pandas  (0) 2020.01.30
Comments