2 분 소요

import warnings
warnings.filterwarnings('ignore')
from IPython.display import Image
import numpy as np
import pandas as pd
import seaborn as sns
#시각화 작업에 필요한 라이브러리를 설치하고
#import 한다.
import matplotlib.pyplot as plt #그래프
import matplotlib as mpl
import matplotlib.font_manager as fm

#한글 폰트를 사용할 때 마이너스 데이터가 깨져
#보이는 문제를 해결한다.
mpl.rcParams['axes.unicode_minus'] = False

#그래프를 쥬피터 노트북 내부에 표시하기 위해
#사용한다.(요즘은 잘 사용안하는 편이다.)
#%matplotlib inline
#그래프를 작성하기 위한 데미데이터
#cumsum(누적합계)
data = np.random.randint(-100, 100, 50).cumsum()
data
array([ -35,   49,  -11,   22,  101,   75,   47,   50,   88,  110,   17,
        -52, -128, -137,  -77,  -83, -179,  -90,  -56,   30,  -66, -159,
       -219, -198, -141,  -94, -126,  -91, -174, -232, -244, -158,  -72,
       -147, -124, -204, -164, -260, -165, -160, -188, -158,  -60,   23,
        -54,    4,    2,  -92,  -10,  -97], dtype=int32)
#range(50)이 x축, data가 y축
plt.plot(range(50), data)
#그래프 크기 조절
plt.rcParams['figure.figsize'] = [12, 5] #차트 크기
plt.title('시간별 가격 추이') #차트 제목
plt.xlabel('시간')            #x축
plt.ylabel('가격')            #y축
plt.show()

output_3_0

#폰트 설정을 하기에 앞서서 matplolib의 설정 정보를 확인한다.
print('버전          : {}'.format(mpl.__version__))
print('설치된 위치   : {}'.format(mpl.__file__))
print('설정 위치     : {}'.format(mpl.get_configdir()))
print('캐시 위치     : {}'.format(mpl.get_cachedir()))
print('설정 파일 위치: {}'.format(mpl.matplotlib_fname()))
버전          : 3.3.4
설치된 위치   : c:\python\lib\site-packages\matplotlib\__init__.py
설정 위치     : C:\Users\user\.matplotlib
캐시 위치     : C:\Users\user\.matplotlib
설정 파일 위치: c:\python\lib\site-packages\matplotlib\mpl-data\matplotlibrc
#컴퓨터에 설치된 폰트 목록을 얻어온다.
#글꼴파일의 확정명은 ttf다
font_list = fm.findSystemFonts(fontpaths=None, fontext='ttf')
print(len(font_list))
print(font_list[:10])
784
['C:\\WINDOWS\\Fonts\\arialbd.ttf', 'C:\\Windows\\Fonts\\GOTHICI.TTF', 'C:\\WINDOWS\\Fonts\\H2GPRM.TTF', 'C:\\Windows\\Fonts\\H2MJSM.TTF', 'C:\\WINDOWS\\Fonts\\calibrili.ttf', 'C:\\Windows\\Fonts\\timesbd.ttf', 'C:\\Windows\\Fonts\\WINGDNG3.TTF', 'C:\\Windows\\Fonts\\REFSAN.TTF', 'C:\\WINDOWS\\Fonts\\PERI____.TTF', 'C:\\WINDOWS\\Fonts\\JOKERMAN.TTF']
#폰트 이름만 나오게 하는 코드(중요하지 않다. 그냥
#위에서 작성한 코드만 사용하자.)
font_list = [f.name for f in fm.fontManager.ttflist]
print(len(font_list))
print(font_list[:10])
822
['STIXGeneral', 'cmtt10', 'DejaVu Sans', 'DejaVu Serif', 'STIXNonUnicode', 'STIXSizeOneSym', 'STIXSizeOneSym', 'STIXGeneral', 'DejaVu Sans Display', 'STIXNonUnicode']
#나눔 글꼴을 사용햘 예정이므로 이름에 'Nanum' 이 포홤된
#폰트만 가져온다.
font_list = [(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]
font_list
[('NanumGothic', 'C:\\WINDOWS\\Fonts\\\x7f\x7f\x7f\x7fBOLD.TTF'),
 ('NanumGothic', 'C:\\WINDOWS\\Fonts\\\x7f\x7f\x7f\x7fEXTRABOLD.TTF'),
 ('NanumGothic', 'C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7fBOLD.TTF'),
 ('NanumGothic', 'C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7f.TTF'),
 ('NanumGothic', 'C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7fEXTRABOLD.TTF'),
 ('NanumGothicCoding',
  'C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumGothicCoding-Bold.ttf'),
 ('NanumGothicCoding',
  'C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumGothicCoding.ttf'),
 ('NanumGothic', 'C:\\WINDOWS\\Fonts\\\x7f\x7f\x7f\x7f.TTF')]
#위의 식을 실행한 결과가 []로 나오면 캐시 폴더로 이동(C:\Users\user\.matplotlib)해 
#폴더의 모든 내용을 삭제한다.
mpl.font_manager._rebuild()

한글 폰트를 적용하는 방법 3가지가 있다.

#1.FontProperties를 사용하는 방법
#=>그래프의 한글 폰트가 필요한 항목마다 지정한다.
#  텍스트를 지정하는 항목에 지정해서 사용할 수 있고
#  지정한 항목에만 해당 폰트가 적용된다.
#  matplotlib.pyplot => title(), xlabel(), ylabel(), legend()
#  matplotlib.axes   => set_title()

#한글 폰트 파일의 경로와 이름을 지정한다.
font = 'C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumGothicCoding.ttf'
fontprop = fm.FontProperties(fname = font, size=15)

plt.plot(range(50), data, 'm')
plt.rcParams['figure.figsize'] = [12, 5] #차트 크기
plt.title('시간별 가격 추이', fontproperties=fontprop) #차트 제목
plt.xlabel('시간', fontproperties=fontprop)            #x축
plt.ylabel('가격', fontproperties=fontprop)            #y축
plt.show()

output_11_0

#2.matplotlib라이브러리의 rcParams[]로 전역 글꼴로 설정한다
#=>쥬피터 노트북에서 파일마다 지정해야 한다.
#import matplotlib.pyplot as plt #그래프
print('기본으로 설정된 폰트 이름 : {}'.format(plt.rcParams['font.family']))
print('기본으로 설정된 폰트 크기 : {}'.format(plt.rcParams['font.size']))
기본으로 설정된 폰트 이름 : ['NanumGothicCoding']
기본으로 설정된 폰트 크기 : 10.0
#2-1
plt.rcParams['font.family'] = 'NanumGothicCoding'
plt.rcParams['font.size'] = 15
plt.plot(range(50), data, 'm')
plt.rcParams['figure.figsize'] = [12, 5] #차트 크기
plt.title('시간별 가격 추이', fontproperties=fontprop) #차트 제목
plt.xlabel('시간', fontproperties=fontprop)            #x축
plt.ylabel('가격', fontproperties=fontprop)            #y축
plt.show()

output_14_0

#2-2
#rcParams[]대신 FrontProperties의 plt.rc를 사용하는 방법
font = 'C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumGothicCoding.ttf'
font_name =  fm.FontProperties(fname=font, size=15).get_name()
print(font_name)
plt.rc('font', family=font_name)
NanumGothicCoding
plt.plot(range(50), data, 'm')
plt.rcParams['figure.figsize'] = [12, 5] #차트 크기
plt.title('시간별 가격 추이', fontproperties=fontprop) #차트 제목
plt.xlabel('시간', fontproperties=fontprop)            #x축
plt.ylabel('가격', fontproperties=fontprop)            #y축
plt.show()
    

output_16_0

#3.rcParams를 matplotlib설정 파일(matplotlibrc)에 직접 넣어준다.
#(경로 : C:\python\Lib\site-packages\matplotlib\mpl-data)
#=>현재 컴퓨터의 모든 쥬피터 노트북에 적용된다.
#font.family : sans-serif => NanumGothicCoding
plt.plot(range(50), data, 'm')
plt.rcParams['figure.figsize'] = [12, 5] #차트 크기
plt.title('시간별 가격 추이') #차트 제목
plt.xlabel('시간')            #x축
plt.ylabel('가격')            #y축
plt.show()
    

output_17_0

태그:

카테고리:

업데이트:

댓글남기기