Programming/Python

matplotlib 한글 문제

빠릿베짱이 2017. 6. 19. 23:52
반응형

1. 리눅스에서 아래와 같은 오류 발생 시

Traceback (most recent call last):

  File "confusion_matrix_example.py", line 93, in <module>

    confusion_matrix(conf_arr, alphabet)

  File "confusion_matrix_example.py", line 43, in confusion_matrix

    fig = plt.figure(figsize=(12, 5))

  File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 535, in figure

    **kwargs)

  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager

    return new_figure_manager_given_figure(num, figure)

  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure

    window = Tk.Tk()

  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__

    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)

_tkinter.TclError: couldn't connect to display "localhost:0.0"


해결 방법:

import matplotlib as mpl
mpl.use('Agg')


2. 코드에 한글에 들어가서 아래와 같은 에러 시

UnicodeDecodeError: 'ascii' codec can't decode byte 0xea in position 0: ordinal not in range(128)


해결 방법:

reload(sys)
sys.setdefaultencoding('utf8')


3. 한글 폰트 설정 방법

from matplotlib import font_manager, rc
font_name =
font_manager.FontProperties(fname="/usr/share/fonts/NanumFont/NanumGothic.ttf").get_name()
rc('font', family=font_name)

폰트를 설치했음에도 불구하고 찾을 수 없다고 나오는 경우

 ~/.cache/matplotlib/  <-- 이 폴더 삭제


이렇게 하면 matplotlib에서 캐시된 폰트를 알 수 있다. 여기서 만약 새로 설치한 폰트가 없다면

for i, x in enumerate(font_manager.fontManager.ttflist):
print i, x, type(x) , x.name # x.name == font name (family name)


 ~/.cache/matplotlib/  <-- 이 폴더 삭제 해야 함. 폴더 내부에 font 리스트가 캐시되어 있음.





반응형