차근차근
matplotlib 본문
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]:
In [9]:
# 기본 옵션
"""
label : 범례 이름
ax, graph : 서브 플롯, 내부 그래프
style : ggplot - 테마(선택가능, 인터넷에서 제공되는 테마도 적용 가능)
alpha : 투명도
kind : 그래프의 종류 - line, bar, barh
rot : 눈금 - 축에 표시되는 데이터
xtick, ytick : 축에 사용되는 값
xlim, ylim : 축에 표시될 데이터의 범위
grid : 격자표시
"""
Out[9]:
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]:
In [24]:
np.random.rand(50).cumsum()
Out[24]:
In [13]:
# 옵션 없이 값만 가지고 표시
plt.plot(np.random.rand(50).cumsum())
Out[13]:
In [12]:
plt.plot(np.random.rand(50).cumsum(), 'k') # k: 검은선
Out[12]:
In [14]:
plt.plot(np.random.rand(50).cumsum(), 'r') # r: 빨간선
Out[14]:
In [15]:
plt.plot(np.random.rand(50).cumsum(), 'r--') # r-- : 삘간 점선
Out[15]:
In [17]:
plt.plot(np.random.rand(50).cumsum(), 'r^--') # ^: 마커 종류
Out[17]:
In [22]:
plt.plot(np.random.rand(50).cumsum(), 'go--')
Out[22]:
In [23]:
# 그리드 추가하기
plt.grid(True)
plt.plot(np.random.rand(50).cumsum(), 'k--')
Out[23]:
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]:
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]:
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]:
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]:
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]:
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]:
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]:
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]:
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