일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 성남은혜의강교회
- 이태원 클라쓰 15회 예고
- 스페인 코로나
- 불가피
- 금리인하
- 김재석
- 임영규
- 은혜의 강 교회
- 제넥신
- 미국 금리인하
- 성남 코로나 확진자
- 킹덤 고근희
- 폰폰테스트
- 고민정
- 김영권 아내
- 픽크루
- 학교 개학 연기 4월
- 이지혜
- 양적완화
- 유튜버 김재석
- 리리남매
- 김영권
- 해킹
- 뭉쳐야 찬다
- 이상형 만들기
- 홍혜걸
- 스콜피온킹
- libtins
- 조희연
- 최강욱
- Today
- Total
Dork's port
Python에서 matplotlib이용 시 font type 변경하기 본문
PDF에는 font type이 존재한다.
몰랐지만, 존재하더라.
그래서 그에 관련된 내용은 아래 링크에서 찾아볼 수 있다.
2019/05/16 - [Paper] - PDF Font type이란?
2019/05/16 - [Mac OS] - Mac OS(OSX)에서 pdf의 font type확인하기.
그래서 지금은 Python에서 어떻게 font type을 변경하는지에 대해 알아보려고 한다.
기본적으로 python matplotlib를 이용하면, type 3를 사용하는데, 이게 논문 작성시에는 문제가 될 수 있다.
나도그랬고..
그래서 바꾸는 방법을 알아보려한다.
font type에 대해서는 이전글에서 간단하게 설명하고 있으므로 바로 코드로 가보자.
# TrueType |
import matplotlib.pyplot as plt
plt.rcParams['pdf.fonttype'] = 42 # TrueType
plt.rcParams['ps.fonttype'] = 42
위와 같이 설정하면 savefig로 저장시에 기본적으로 type 3으로 적용된 폰트를 TrueType으로 바꿀 수 있다.
다만, 나의 경우 type 1을 이용해야 했는데, 아래와 같이 코드를 작성해봤다.
import matplotlib.pyplot as plt
plt.rcParams['pdf.fonttype'] = 1
plt.rcParams['ps.fonttype'] = 1
그러나 결과로는 아래와 같은 에러가 발생했다.
ValueError: Key pdf.fonttype: Supported Postscript/PDF font types are [3, 42]
그래서 소스코드를 보니 아래내용을 포함하고 있었는데, 해석하자면 위의 옵션으로는 3과 42밖에 사용하지 못했다.
def validate_fonttype(s):
"""
confirm that this is a Postscript of PDF font type that we know how to
convert to
"""
fonttypes = {'type3': 3,
'truetype': 42}
try:
fonttype = validate_int(s)
except ValueError:
try:
return fonttypes[s.lower()]
except KeyError:
raise ValueError(
'Supported Postscript/PDF font types are %s' % list(fonttypes))
else:
if fonttype not in fonttypes.values():
raise ValueError(
'Supported Postscript/PDF font types are %s' %
list(fonttypes.values()))
return fonttype
그래서 Type 1을 사용하기 위해 구글링 한 결과 아래와 같이 설정하면 type 1으로 Save 할 수 있다.
# Type 1 |
import matplotlib.pyplot as plt
plt.rcParams['ps.useafm'] = True
plt.rcParams['pdf.use14corefonts'] = True
plt.rcParams['text.usetex'] = True
그리고 실행해서 정상적으로 저장이 되었다면 Type 1으로 저장이 되었을 것이다(확인 방법은 위에 링크에 나와있음).
그러나 나의 경우(MacOS Mojave) 아래의 에러가 발생하였다.
FileNotFoundError: [Errno 2] No such file or directory: 'latex': 'latex'.
알고보니 latex 프로그램을 이용해서 convert를 진행하는 것 같았다(아마 text.usetex 옵션이 그에 해당하는 옵션이라고 생각).
그래서 latex가 python package인 줄알고 다운을 받았더니, 그게 아니라 latex 응용프로그램(application)을 이용하는 것 이었고, Mac의 경우 아래 명령어로 다운로드 가능하다.
$ brew cask install mactex
그리고 설치가 완료되면, 자동적으로 path를 지정해줘서 문제가 없어야 하지만 나의 경우 다른 에러가 발생했다.
FileNotFoundError: [Errno 2] No such file or directory: 'kpsewhich'
위의 파일은 원래 latex에 포함되어야 하는 파일이다. 확인해 보니 install은 제대로 되었는데 path가 제대로 설정되지 않아 생기는 오류였다.
그래서 아래와 같은 방법을 통해 path를 찾고, path에 등록해주었다.
$ sudo find / -name "kpsewhich"
그러면 어떤 경로가 뜰텐데, 나의 경우 /usr/local/texlive/2019/bin/x86_64-darwin/kpsewhich 이었다(지금확인해 보니 왜인진 몰라도 기본 path가 /Library/TeX/texbin/kpsewhich 로 설정되어있으며 여기에도 존재한다).
그래서 PATH를 추가해주기 위해 아래처럼 명령어를 사용해 준다.
※ 재부팅시에도 영구적으로 적용하고 싶다면 ~/.bash_profile 파일의 마지막에 아래 내용을 추가하자.
$ PATH="/usr/local/texlive/2019/bin/x86_64-darwin/kpsewhich :${PATH}"
$ export PATH
그리고 실행하면 정상적으로 될 것 이다!
ㅋㅋ!
Ref : http://phyletica.org/matplotlib-fonts/
http://nerdjusttyped.blogspot.com/2010/07/type-1-fonts-and-matplotlib-figures.html
'Develop' 카테고리의 다른 글
Python3 - SQLAlchemy 사용하기 (0) | 2020.02.26 |
---|---|
TUN Interface의 패킷 캡처 중 앞에 헤더가 붙는 경우 (2) | 2019.07.29 |
PyQt에서 QPlainText를 이용해 정보 출력하기(색상 변경) (2) | 2019.04.14 |
pyqt를 이용한 QTreeWidget 이용 및 리스트 간 항목 이동 구현하기 (4) | 2019.04.13 |
Python에서 db 연동하기(mysql, mariadb) (4) | 2019.03.28 |