Python

[Python] 시각화 도구

SangRok Jung 2022. 9. 28. 22:20
반응형

 

 

 

Matplotlib


기본 그래프 도구

 

 

  • 연속하는 데이터 값들을 직선 또는 곡선으로 연결하여 데이터 값 사이의 관계 표현
  • 시계열 데이터와 같이 연속적인 값의 변화와 패턴을 파악하는 데 적합(시도별 전출입 인구수.xlsx)

 

 

 

 


▶ 라이브러리를 불러옵니다.

import matplotlib.pyplot as plt

 

 

▶ 주소를 불러옵니다.

df_move = pd.read_excel("./시도별 전출입 인구수.xlsx")

 

 

▶ 누락 값을 앞 데이터로 채웁니다.

데이터 프레임 객체 .fillna(method='fill'))
df_move.fillna(method='ffill', inplace=True)

 

 

 

▶ 서울에서 다른 지역으로 이동한 데이터만 추출합니다.

is_seoul = df_move['전출지별'] == "서울특별시"
not_seoul = df_move['전입지별'] != "서울특별시"

df_seoul = df_move[is_seoul & not_seoul]

 

 

 

 

▶ 전출지 별의 컬럼을 삭제하고 전입지별의 컬럼명을 전입지로 변경합니다.

df_seoul.drop(columns=['전출지별'], inplace=True)
df_seoul.rename(columns={"전입지별":"전입지"}, inplace=True)

 

 

 

 

▶ 컬럼 전입지를 인덱스로 설정합니다.

df_seoul.set_index("전입지", inplace=True)

 

 

 

 

 

▶ 서울에서 경기도로 이동한 인구 데이터 값만 선택하여 저장합니다.

sr_one = df_seoul.loc[["경기도"]]

 

 

▶ 그래프를 생성합니다.

 

- plot()으로 생성

sr_one.T.plot()

 

 

- plt.plot()으로 생성

plt.plot(sr_one.columns, sr_one.loc['경기도'])

 

 

 

 

 

plt.plot() 그래프 생성


 

▶ 차트 제목, 축 이름 추가합니다.

▷ 타이틀 설정 구문

plt.title("title name")

▷ x축, y축명 설정 구문

plt.xlabel("x axis name")

plt.ylabel("y axis name")

▷ 한글 설정

# 한글 설정
from matplotlib import font_manager, rc
font_path = "./malgun.ttf" # 폰트파일의 위치
mg = font_manager.FontProperties(fname=font_path)
font_name = mg.get_name()
rc('font', family=font_name)
# 한글이 추가되는 함수 옵션에 추가합니다. fontproperties=mg

# 맥 한글 설정
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False

▷ 예문

from matplotlib import font_manager, rc
font_path = "./malgun.ttf" # 폰트파일의 위치
mg = font_manager.FontProperties(fname=font_path)
font_name = mg.get_name()
rc('font', family=font_name)

plt.plot(sr_one.columns, sr_one.loc['경기도'])
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)

 

 

 

 

▶ 그래프 figure 설정

# 제일 윗 단에 입력합니다.
plt.figure(x length, y length)

 

▷ 예문

plt.figure(figsize=(14, 5))
plt.plot(sr_one.columns, sr_one.loc['경기도'])
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)

plt.show()

 

▶ 그래프 rotation 설정

▷ 구문

plt.xticks(rotation=각도)

▶ 예문

plt.figure(figsize=(14, 5))
plt.plot(sr_one.columns, sr_one.loc['경기도'])
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)
# plt.xticks(rotation='vertical') 90도로 설정합니다.
plt.xticks(rotation=70)

plt.show()

 

 

 

 

▶ 스타일 서식 지정 

색, 폰트 등 디자인적 요소를 사전에 지정된 스타일로 빠르게 일괄 변경합니다.

스타일 서식을 지정하는 것은 Matpolib 환경 설정을 변경하는 것이므로 다른 파일에도 계속 적용합니다.

 

▷ 스타일 서식 종류

print(plt.style.available)
# ['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', 
# '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 
# 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 
# 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 
# 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep', 
# 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 
# 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 
# 'seaborn-whitegrid', 'tableau-colorblind10']

 

▷ 스타일 서식을 미리 확인합니다.

반복문으로 모든 서식을 확인할 수 있습니다.

for i in plt.style.available :
    print(i)
    plt.style.use(i)
    plt.figure(figsize=(14, 5))

    plt.plot(sr_one.columns, sr_one.loc['경기도'])
    plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
    plt.xlabel("Year 기간", fontproperties=mg)
    plt.ylabel("Movement 이동 인구수", fontproperties=mg)
    # plt.xticks(rotation='vertical')
    plt.xticks(rotation=70)

    plt.show()

 

▷ 예문 (ggplot)

plt.style.use('ggplot')
plt.figure(figsize=(14, 5))

plt.plot(sr_one.columns, sr_one.loc['경기도'])
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)
# plt.xticks(rotation='vertical')
plt.xticks(rotation=70)


plt.show()

 

 

▷ 예문 (seaborn-whitegrid)

plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(14, 5))

plt.plot(sr_one.columns, sr_one.loc['경기도'])
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)
# plt.xticks(rotation='vertical')
plt.xticks(rotation=70)

plt.show()

 

 

 

 

 

 

▶ Marker

▶ 구문

plt.plot(x axis, y axis, marker='o', markersize=마커의 크기)
# marker의 인자값은 *도 가능합니다.

 

▷ 예문

plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(14, 5))

plt.plot(sr_one.columns, sr_one.loc['경기도'], marker='o', markersize=7)
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg)
plt.xlabel("Year 기간", fontproperties=mg)
plt.ylabel("Movement 이동 인구수", fontproperties=mg)
# plt.xticks(rotation='vertical')
plt.xticks(rotation=70)

plt.show()

 

 

▶ 범례 설정

▶ 구문

plt.plot(x axis, y axis, label="라벨 이름")
plt.legend()

▶ 범례 디자인 설정

plt.legend(loc='best', fontsize=14, frameon=True, shadow=True, prop=mg)

* loc : 위치, best를 하게 되면 파이썬 내에서 최적의 위치 값으로 설정합니다.

* frameon : 테투리를 생성합니다.

* shadow : 테두리의 그림자 값을 생성합니다.

* prop : 한글 사용 여부 값입니다.

 

▷ 예문

plt.plot(sr_one.columns, sr_one.loc['경기도'], marker='o', markersize=7, label="moving population")

 

 

 

 

 

 

▶ FontSize 설정

타이틀, x축, y축, 범례의 텍스트 크기를 설정합니다.

▷ 예문

plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg, fontsize=27)
plt.xlabel("Year 기간", fontproperties=mg, fontsize=20)
plt.ylabel("Movement 이동 인구수", fontproperties=mg, fontsize=20)
plt.legend(loc='best', fontsize=14, frameon=True, shadow=True)

 

▷ 범례와 폰트사이즈 설정의 예문

plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(14, 5))

plt.plot(sr_one.columns, sr_one.loc['경기도'], marker='o', markersize=7, label="moving population")
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg, fontsize=27)
plt.xlabel("Year 기간", fontproperties=mg, fontsize=20)
plt.ylabel("moving population", fontproperties=mg, fontsize=20)
plt.xticks(rotation=70)
plt.legend(loc='best', fontsize=14, frameon=True, shadow=True)

plt.show()

 

 

 

 

 

 

▶ y축의 범위 설정

▶ 구문

plt.ylim(최소값, 최대값)

 

▷ 예문

plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(14, 5))
plt.ylim(50000, 800000)

plt.plot(sr_one.columns, sr_one.loc['경기도'], 
         marker='o', markersize=7, 
         label="moving population")
plt.title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg, fontsize=27)
plt.xlabel("Year 기간", fontproperties=mg, fontsize=20)
plt.ylabel("moving population", fontproperties=mg, fontsize=20)
plt.xticks(rotation=70)
plt.legend(loc='best', fontsize=14, frameon=True, shadow=True)

plt.show()

 

 

▶ 화살표 입력

  • 처음 인자 값 : 텍스트
  • xy : 화살표의 머리 위치(x index, y value)
  • xytext : 화살표의 꼬리 위치(x index, y value)
  • arrowprops 
    • arrowstyle : 화살표의 스타일
    • color : 화살표의 색
    • lw : line width
plt.annotate("",
             xy=(25, 650000), 
             xytext=(2, 250000), 
             arrowprops = dict(arrowstyle = "->", color = "skyblue", lw = 5))
plt.annotate("",
             xy=(47, 420000), 
             xytext=(32, 580000), 
             arrowprops = dict(arrowstyle = "->", color = "brown", lw = 5))

 

 

 

▶ 화살표 주석 입력

  • 처음 인자값 : 텍스트
  • xy : 텍스트 머리 위치(x index, y value)
  • xytext : 텍스트의 꼬리 위치(x index, y value)
  • ha : horizontal alignment
  • va : vertival alignment
  • fontsize : 폰트 사이즈
plt.annotate("increase in population mobility (1970-1995)",
             xy=(40, 650000), 
             xytext=(13, 400000),
             rotation=20,
             ha = 'center',
             va = 'baseline', fontsize=15)
plt.annotate("decrease in population movement (2002-2017)",
             xy=(47, 300000), 
             xytext=(40, 480000), 
             rotation= -13,
             ha = 'center',
             va = 'baseline', fontsize=12)

 

 

 

 

plt.figure()


화면을 분할하여 그래프를 여러 개 생성합니다.

  • 화면을 여러개로 분활하여 분활된 각 화면에 서로 다른 그래프를 생성합니다.
  • 여러개의 axe객체를 생성하여 분활된 화면마다 axe객체를 입력합니다.
  • axe 객체는 각각 서로 다른 그래프로 표현합니다.
  • 한 화면에서 여러 개의 그래프를 비교하거나 다양한 정보를 동시에 보여줄 때 사용합니다.
  • axe객체를 1개만 생성하는 경우에는 하나의 그래프만 표시합니다.
fig = plt.figure(figsize=(10, 10))

ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

plt.show()

 

 

▶ 두개의 그래프를 생성합니다

fig = plt.figure(figsize=(10, 10))

ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

#ax2
ax2.plot(sr_one.columns, sr_one.loc['경기도'], 
         marker='o', markersize=7, 
         label="moving population")
ax2.legend(["Seoul -> Gyeonggi-do"], loc='best', frameon=True, shadow=True)
ax2.set_ylim(50000, 800000)
    
#ax1
ax1.scatter(sr_one.columns, sr_one.loc['경기도'], color='red')
ax1.set_ylim(50000, 800000)

plt.show()

 

 

▶ 두개의 그래프의 디테일을 설정합니다.

fig = plt.figure(figsize=(10, 10))

ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

#ax2
ax2.plot(sr_one.columns, sr_one.loc['경기도'], 
         marker='o', markersize=7, 
         label="moving population")
ax2.legend(["Seoul -> Gyeonggi-do"], loc='best', frameon=True, shadow=True)
ax2.set_ylim(50000, 800000)
ax2.set_xticklabels(labels=sr_one.columns, rotation=75, fontdict=dict(fontsize=10))
ax2.set_xlabel("Year 기간", fontproperties=mg, fontsize=20)
ax2.set_ylabel("moving population", fontproperties=mg, fontsize=20)
    
#ax1
ax1.set_title("Seoul -> Gyeonggi-do 서울 -> 경기", fontproperties=mg, fontsize=25)
ax1.scatter(sr_one.columns, sr_one.loc['경기도'], color='red')
ax1.legend(["Seoul -> Gyeonggi-do"], loc='best', frameon=True, shadow=True)
ax1.set_ylim(50000, 800000)
ax1.set_xticklabels(labels=sr_one.columns, rotation=75, fontdict=dict(fontsize=10))
ax1.set_xlabel("Year 기간", fontproperties=mg, fontsize=20)
ax1.set_ylabel("moving population", fontproperties=mg, fontsize=20)
# plt.show()

 

 

 

▷ plt.plot()의 옵션

꾸미기 옵션 설명
'o' 선 그래프가 아니라 점 그래프로 표현
marker = 'o' 마커 모양 ('o', '+', '*' 등)
markerfacecolor='green' 마커 배경색
markersize=10 마커 크기
color='olive' 선의 색
linewidth=2 선의 두깨
label='서울 -> 경기' 라벨 지정

 

 

 

 

 

▶ 3개의 그래프를 한 그래프로 표현합니다.

#서울-> 충남, 경북, 강원도 3개 그래프 한화면에 생성


df_3 = df_seoul.loc[['충청남도', '경상북도', '강원도']].T
df_3 = df_3.astype(int)
# astype 메서드는 열의 요소의 dtype을 변경하는함수 입니다.

# 그래프 설정
plt.style.use('seaborn-whitegrid')
fig = plt.figure(figsize=(20, 5))
ax = fig.add_subplot(1, 1, 1)


ax.plot(df_3, marker='o', markersize=7, label='set', linewidth=7)

# 각각의 그래프의 색을 변경하기 위해서는 개별로 생성해야합니다.
# ax.plot(df_3.충청남도, marker='o',label = '서울->충남', mfc='orange',color='green')
# ax.plot(df_3.경상북도, marker='o', label = '서울->경북', mfc='pink',color='skyblue')
# ax.plot(df_3.강원도, marker='o', label = '서울->강원', mfc='red',color='purple')

ax.set_xticklabels(df_3.index, rotation=75)
ax.legend(["Seoul to Chungcheongnam-do", "Seoul to Gyeongsangbuk-do", "Seoul to Gangwon-do"])
ax.set_title('The movement of population from Seoul to Chungcheongnam-do, Gyeongsangbuk-do, Gangwon-do',
            fontsize = 25)
ax.set_xlabel("Year", fontsize=20)
ax.set_ylabel("Movement Value", fontsize=20)

plt.show()

 

 

▶ 4개의 그래프를 개별 생성합니다.

df_4 = df_seoul.loc[['충청남도', '경상북도', '강원도', '전라남도']].T
df_4 = df_4.astype(int)
df_4

plt.style.use('seaborn-whitegrid')
fig = plt.figure(figsize=(20, 10))

# 여백설정
plt.subplots_adjust(wspace = 0.5, hspace = 0.5)

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(df_4["충청남도"], color="HotPink", linewidth=7)
ax2.plot(df_4["경상북도"], color="RebeccaPurple", linewidth=7)
ax3.plot(df_4["강원도"], color="Salmon", linewidth=7)
ax4.plot(df_4["전라남도"], color="DarkGreen", linewidth=7)

ax1.set_title("Seoul to Chungcheongnam-do", fontsize=20)
ax2.set_title("Seoul to Gyeongsangbuk-do", fontsize=20)
ax3.set_title("Seoul to Gangwon-do", fontsize=20)
ax4.set_title("Seoul to Jeollanam-do", fontsize=20)

for i in [ax1, ax2, ax3, ax4] :
    i.set_xticklabels(df_3.index, rotation=75, fontsize=10)
    i.set_xlabel("Year", fontsize=20)
    i.set_ylabel("Movement Value", fontsize=20)
    i.set_ylim(5000, 60000)

 

 

 

 

 

 

색 정보 확인


# 색을 확인합니다.
import matplotlib

colors = {}
for name, hex in matplotlib.colors.cnames.items() :
    colors[name] = hex

print(colors)

 

 

 

 

 

 

 

면적 그래프


  • Area plot은 각 열의 데이터를 선 그래프로 구현 후 선 그래프와 x축 사이 공간에 색을 입힙니다.
  • 색의 alpha는 기본값 0.5로 투과되어 보입니다. (투명도 : 0 ~ 1)

 

▶ 기본 구문

plot(kind='area', stacked=True, alpha=0.2)

 

 

 

▶ 면적 그래프 

  • stack=False
# 0930 코드 시작
df_4.plot(kind='area', stacked=False, alpha=0.2, figsize=(20, 10))

plt.title('Seoul ->Other regions Population Movement', size=30) # fontproperties=mg_30
plt.ylabel('Number of moving populations', size=20) # fontproperties=mg_20
plt.xlabel('Period', size=20) # fontproperties=mg_20
plt.legend(loc='best', fontsize=15) # prop=mg_15
plt.legend(["Seoul to Chungcheongnam-do", "Seoul to Gyeongsangbuk-do", "Seoul to Gangwon-do", "Seoul to Jeollanam-do"])
plt.show()

▶ 면적 그래프

  • stack=True

 

 

막대 그래프


  • 데이터 값의 크기의 비례하여 높이를 갖는 직사각형 막대로 표현합니다.
  • 막대 높이의 상대적 길이 차이를 통해 값의 크고 작음을 설명합니다.
  • 세로형과 가로형이 있습니다.

 

▶ 세로형 막대 그래프

  • 세로형의 경우 정보 제공 측면에서 선 그래프와 큰 차이가 없습니다.
  • 세로형 막대 그래프는 시간적으로 차이가 나는 두 점에서 데이터 값의 차이를 잘 설명합니다.
  • 시계열 데이터를 표현하는데 적합합니다.
plot(kind='bar')

 

 

▷ 예문

col_years = list(map(str, range(2010, 2018)))

df_4 = df_seoul.loc[['충청남도','경상북도', '강원도', '전라남도'], col_years]
df_4 = df_4.transpose()

df_4.plot(kind='bar', figsize=(20, 10), width=0.7, color=['orange', 'green', 'skyblue', 'blue'])

plt.ylim(0, 30000)
plt.title('Seoul -> Other regions Population Movement', size=30) # fontproperties=mg_30
plt.ylabel('Number of moving populations', size=20) # fontproperties=mg_20
plt.xlabel('Period', size=20) # fontproperties=mg_20
plt.legend(["Seoul to Chungcheongnam-do", "Seoul to Gyeongsangbuk-do", "Seoul to Gangwon-do", "Seoul to Jeollanam-do"], loc='best', fontsize=15)

plt.show()

 

 

 

 

▶ 가로형 막대 그래프

▷ 데이터 프레임을 확인합니다.

df_4

 

 

 

▷ 데이터 프레임을 전치 시킵니다.

df_4.T = df_4.T

 

 

 

 

▷ 각 지역의 인덱스를 합계 인덱스를 생성하여 입력합니다.

df_4['합계'] = df_4.sum(axis=1)

 

 

 

 

▷ 각 인덱스의 가장 큰값부터 정렬 합니다.

df_total = df_4[['합계']].sort_values(by='합계', ascending=True)

 

 

▷ 그래프를 생성합니다.

df_total.plot(kind='barh', color='DodgerBlue', width=0.5, figsize=(10, 5))

 

 

 

▷ 인덱스명을 변경합니다.

df_total.rename(index={"전라남도":"Jeollanam-do", "경상북도" : "Gyeongsangbuk-do", "강원도" :"Gangwon-do", "충청남도" :"Chungcheongnam-do"}, inplace=True)

 

 

 

▷ 그래프의 x label, y label, title, legend 값을 설정하여 그래프를 생성합니다.

df_total.plot(kind='barh', color='DodgerBlue', width=0.5, figsize=(10, 5), label="Amount of movement")

plt.title('Seoul -> Other regions Population Movement', size=30) # fontproperties=mg_30
plt.ylabel('Number of moving populations', size=20) # fontproperties=mg_20
plt.xlabel('Period', size=20) # fontproperties=mg_20
plt.legend(["Amount of movement"], loc='best', fontsize=13, frameon=True, shadow=True)

plt.show()

 

 

 

 

 

 

 

 

 

종합 그래프 생성


▶ 엑셀 데이터를 가져옵니다,

df_elec = pd.read_excel('./남북한발전전력량.xlsx', header=None)

 

 

▶ 북한의 데이터만 가져옵니다.

df_elec_nk = df_elec[6:]
# df_elec_nk = df_elec.iloc[6:]

 

 

 

▶ 전력량 컬럼을 삭제합니다.

df_elec_nk.drop([0],axis=1,inplace=True)

 

 

 

 

▶ 발전전력별 컬럼을 인덱스로 지정합니다.

df_elec_nk.set_index(df_elec_nk.columns[0], inplace=True)

 

 

 

 

▶ 데이터 프레임을 전치합니다.

df_elec_nk = df_elec_nk.T

 

 

 

▶ 합계의 컬럼명을 총발전량으로 변경합니다.

df_elec_nk.rename(columns={"합계":"총발전량"}, inplace=True)

 

 

▶ '총 발전량' 컬럼을 생성해 총 발전량의 데이터를 1칸 밀어서 입력합니다.

  • shift()
    • 기준 컬럼의 데이터를 입력한 정수의 칸 만큼 밀어서 반환합니다.
df_elec_nk['총 발전량 -1년'] = df_elec_nk['총발전량'].shift(1)

 

 

 

 

▶ 증감률과 총발전량을 계산하여 증감률 컬럼에 입력합니다.

df_elec_nk['증감률'] = (df_elec_nk['총발전량'] / df_elec_nk['총 발전량 -1년'] - 1) * 100

 

 

 

▶ 수력, 화력의 컬럼명을 변경합니다.

df_elec_nk.rename(columns={"화력":"Firepower", "수력":"Water power"}, inplace=True)

 

 

 

 

▶ 수력, 화력의 누적 막대 그래프를 ax1에 저장합니다.

ax1 = df_elec_nk[["Water power", "Firepower"]].plot(kind='bar', stacked=True, width=0.5, figsize=(20, 10))

 

 

 

 

 

▶ 증감률 그래프를 ax2에 저장한뒤 twinx() 합니다.

# 수력 화력 그래프 ax1에 저장
ax1 = df_elec_nk[["Water power", "Firepower"]].plot(kind='bar', stacked=True, width=0.5, figsize=(20, 10))

# ax2를 ax1에 twinx()
ax2 = ax1.twinx()

# ax2에 증감률 그래프 생성
ax2.plot(df_elec_nk.index, df_elec_nk['증감률'], marker='o', color="ForestGreen", ls='--')

# y축 설정
ax1.set_ylim(0, 500)
ax2.set_ylim(-50, 50)

# 타이틀, x label, y label 설정
ax1.set_title('North Koreas electricity generation (1999 ~ 2016)', size=30) # fontproperties=mg_30
ax1.set_ylabel('Amount of electricity generated(KWh)', size=20) 
ax2.set_ylabel('year-on-year rate of increase and decrease(%)', size=20) 
ax1.set_xlabel('Year', size=20)

# 범례설정
ax2.legend(["Percentage change"], loc='best')

plt.show()

 

 

 

 

 

반응형

'Python' 카테고리의 다른 글

[Python] Scatterplot  (0) 2022.09.30
[Python] Histogram  (1) 2022.09.30
[Python] pandas 내장 그래프 도구  (0) 2022.09.27
[Python] 데이터 확인  (0) 2022.09.27
[Python] Web scrapping  (0) 2022.09.27