6.グラフ
9142 ワード
Matplotlib基本グラフィックツール
グラフを使用すると、データの構造とパターンがわかりやすくなります.
- matplotlib.「as plt」などのpyplotをインポートし、pltと略称します.
import matplotlib.pyplot as plt
-matplotlibでハングルフォントがサポートされていないという問題があります.次のコードを使用して、ハングルフォントのクラックを解決します.
from matplotlib import font_manager,rc
font_path = "" 폰트파일 위치
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font',family=font_name)
1.線図
ex)
import pandas as pd
import matplotlib.pyplot as plt
# 한글 폰트문제 해결
from matplotlib import font_manager,rc
font_path = "" 폰트파일 위치
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font',family=font_name)
df = pd.read_excel(path,engine='openpyxl',header=0)
# 누락값(NaN)을 앞데이터로 채움
df = df.fillna(method='ffill')
# 서울에서 다른 지역으로 이동한 데이터만 추출하여 정리
mask = (df['전출지별'] == '서울특별시' ) & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
# 전출지별 열 삭제
df_seoul = df_seoul.drop(['전출지별'],axis=1)
# 전입지별-> 전입지 이름변경
df.seoul.rename({'전입지별':'전입지'},axis=1,inplace=True)
# 전입지 열을 행인덱스로 변경
df_seoul.set_index('전입지',inplace=True)
# df_seoul에서 '전입지'가 '경기도'인 행 데이터를 선택하여 sr_one에 저장한다.
sr_one = df_seoul.loc['경기도']
# x축 = sr_one.index, y축 = sr_one.value 으로 한 그래프를 그린다.
plt.plot(sr_one)으로 입력해도 가능.
plt.plot(sr_one.index,sr_one.values)
# 차트 제목 설정
plt.title('서울->경기 인구이동')
# 축이름추가
plt.xlabel('기간')
plt.ylabe('이동 인구수')
plt.show()
実行結果2.装飾図形
0.フレームサイズの設定
1.タイトルの設定
2.軸名の設定
3.凡例設定
locオプションは、凡例の位置で、デフォルト値は「best」で、「上右」、「下左」などのオプションがあります.
4.ルーラーラベルの設定
x軸ルーラーラベル寸法の設定と回転:
plt.xtics(ルーラーラベルサイズ、回転=垂直)
回転オプションに数値を入力すると、対応する数値の角度で反時計回りに回転します.
y軸ルーラーラベル寸法の設定と回転:
plt.ytics(ルーラーラベルサイズ、回転=垂直)
回転オプションに数値を入力すると、対応する数値の角度で反時計回りに回転します.
5.スタイルの書式設定
matplotlibスタイルフォーマットのタイプは、次のとおりです.
「ggplot」、「classic」、「bmh」、「dark background」、「fast」、「grayscale」、「seaborn」など様々なタイプが存在する.
import matplotlib.pyplot as plt
print(plt.style.available)
6.x軸、y軸範囲の調整
7.コメントの設定
注釈は、
ex)
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = r'C:\Users\kjt63\OneDrive\바탕 화면\python\data_analysis\sample\part4\malgun.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font',family=font_name)
df = pd.read_excel(r'C:\Users\kjt63\OneDrive\바탕 화면\python\data_analysis\sample\part4\시도별 전출입 인구수.xlsx',header=0)
df = df.fillna(method='ffill')
mask = (df.전출지별 == '서울특별시') & (df.전입지별 != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop('전출지별',axis=1)
df_seoul.rename({'전입지별':'전입지'},axis=1,inplace = True)
df_seoul.set_index('전입지',inplace=True)
sr_one = df_seoul.loc['경기도']
plt.style.use('ggplot')
plt.figure(figsize=(14,5))
plt.xticks(size=10,rotation=90)
plt.plot(sr_one.index,sr_one.values,marker='o',markersize=10)
plt.title('서울 to 경기',size=20)
plt.xlabel('연도')
plt.ylabel('이동인구수')
plt.legend(labels=['서울->경기'],loc='best',fontsize=15)
# y축 범위 지정 plot.ylim(최소값,최대값)
plt.ylim(50000,800000)
# 화살표1 주석
plt.annotate('', # 주석이름
xy=(20,620000), # 화살표의 머리부분(끝점)
xytext=(2,290000), # 화살표의 꼬리부분(시작점)
xycoords='data', # 좌표체계
arrowprops=dict(arrowstyle='->', color='skyblue', linewidth=5) # 화살표 서식
)
# 화살표1 주석위에 붙힐 주석
plt.annotate('인구 이동 증가(1970-1995)',
xy=(10,550000), # 텍스트 위치 기준점
rotation = 25, # 텍스트 회전 각도
va='baseline', # 텍스트 상하정렬
ha='center', # 텍스트 좌우정렬
fontsize=15 # 텍스트 크기설정
)
# 화살표2
plt.annotate('', # 주석이름
xy=(47,450000), # 화살표의 머리부분(끝점)
xytext=(30,580000), # 화살표의 꼬리부분(시작점)
xycoords='data', # 좌표체계
arrowprops=dict(arrowstyle='->', color='olive', linewidth=5) # 화살표 서식
)
# 화살표2 주석위에 붙힐 주석
plt.annotate('인구 이동 감소(1995-2017)',
xy=(40,560000), # 텍스트 위치 기준점
rotation = -11, # 텍스트 회전 각도
va='baseline', # 텍스트 상하정렬
ha='center', # 텍스트 좌우정렬
fontsize=15, # 텍스트 크기설정
)
plt.show()
実行結果
3.画面を分割して複数の図形を描画する-axeオブジェクトを利用する
Step 2. figsizeオプションを使用してフレームサイズを設定する
ax 2=fig.add subplot(行番号、列サイズ、サブ印刷順序)
ax 1,ax 2はfigというフレーム内の各グラフィックオブジェクトとなる.
# marker옵션으로 'o'를 사용하지않고 그냥 'o'로 적용하면 점그래프가된다.
ax1.plot(sr_one,'o',markersize=10)
ax2.plot(sr_one,marker='o',markerfacecolor='green',markersize=10, color='olive',linewidth=2,label='서울->경기')
ax2.legend(loc='best')
+ 하나의 그림틀 내부에 존재하는 그래프객체를 꾸밀때에는
set_title,
set_xlabel,set_ylabel
set_ylim, set_xlim,
set_xticklabels(눈금라벨설정),tick_params(눈금라벨크기),
legend(범례) 메소드를 사용한다.
「o」:点グラフ
marker=「o」:タグ形状(ex:「+」、「*」、「.」、「o」)
markerfacecolor="green":背景色をマーク
color="olive":線の色
linewidth=2:線幅
Label:凡例設定
legentメソッドを使用して設定することもできます.
4.分割画面の例
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_path = r'C:\Users\kjt63\OneDrive\바탕 화면\python\data_analysis\sample\part4\malgun.ttf' #폰트파일의 위치
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
df = pd.read_excel(r'C:\Users\kjt63\OneDrive\바탕 화면\python\data_analysis\sample\part4\시도별 전출입 인구수.xlsx',engine='openpyxl',header=0)
df = df.fillna(method='ffill')
mask = (df.전출지별 =='서울특별시') & (df.전입지별 != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop('전출지별',axis=1)
df_seoul.rename({'전입지별':'전입지'},axis=1,inplace=True)
df_seoul.set_index('전입지',inplace=True)
col_years = list(map(str,range(1970,2018)))
df_4 = df_seoul.loc[['충청남도','경상북도','강원도','전라남도'], col_years]
plt.style.use('ggplot')
fig = plt.figure(figsize=(20,10))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
ax1.plot(col_years, df_4.loc['충청남도',:],marker='o',markerfacecolor='green',
markersize=10,color='olive',lw=2,label='서울->충남')
ax2.plot(col_years, df_4.loc['경상북도',:],marker='o',markerfacecolor='blue',
markersize=10,color='skyblue',lw=2,label='서울->충남')
ax3.plot(col_years, df_4.loc['강원도',:],marker='o',markerfacecolor='red',
markersize=10,color='magenta',lw=2,label='서울->강원')
ax4.plot(col_years, df_4.loc['전라남도',:],marker='o',markerfacecolor='orange',
markersize=10,color='yellow',lw=2,label='서울->전남')
ax1.legend(loc='best')
ax2.legend(loc='best')
ax3.legend(loc='best')
ax4.legend(loc='best')
ax1.set_title('서울->충남 인구이동')
ax2.set_title('서울->경북 인구이동')
ax3.set_title('서울->강원 인구이동')
ax4.set_title('서울->전남 인구이동')
ax1.set_xticklabels(col_years,rotation=90,size=5)
ax2.set_xticklabels(col_years,rotation=90,size=5)
ax3.set_xticklabels(col_years,rotation=90,size=5)
ax4.set_xticklabels(col_years,rotation=90,size=5)
plt.show()
実行結果Reference
この問題について(6.グラフ), 我々は、より多くの情報をここで見つけました https://velog.io/@kdo6301/6.-그래프テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol