Python은 왠지 한글하고 친하지가 않은 것 같다.

그나마 v3.x 버전이 되면서 많이 편해지긴 했지만, 그래도 한글 관련 이슈가 계속 나오는 느낌적인 느낌이...

 

MachineLearning 공부하게 되면서 많은 분들이 사용하고 있는 matplotlib의 경우에도

기본적으로는 한글 출력에 문제가 있다.

 

Google Colab 및 Local 환경에서 matplotlib 한글 출력이 잘 되도록 해보자.

 

 

1. Google Colab

 

① 기본 상황

  - 한글 부분이 제대로 나오지 않는 것을 볼 수 있다.

 

font error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

 

install font

 

③ 런타임 재시작

  - 설치된 폰트를 사용하기 위해 "런타임 다시 시작"을 실행하자

 

런타임 다시 시작

 

④ 폰트 적용

  - 이제 한글을 적용해서 그래프를 그려보자.

  - 설치한 폰트를 사용하도록 한 줄 추가가 되어야 한다.

 

plt.rc('font', family='NanumBarunGothic')

 

matplotlib with hangul

 

  - 그런데, 위의 그래프에서 뭔가 이상한 것을 볼 수 있는가?

  - y축의 "-5" 부분이 제대로 출력되지 않았다.

 

⑤ minus 처리

  - 아래와 같은 구문이 추가되면 된다.

import matplotlib as mpl
 
mpl.rcParams['axes.unicode_minus'] = False

 

fix minus

 

 

2. Local (Ubuntu)

Colab과 비슷하지만 약간 차이가 있다.

 

① 기본 상황

  - 코드가 살짝 다르다.

 

import pandas as pd
import matplotlib.pyplot as plt
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

execute

 

error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

$ sudo apt-get install -y fonts-nanum
$ sudo fc-cache -fv
$ rm ~/.cache/matplotlib -rf

 

③ 코드 개선

  - 폰트 및 마이너스 관련 코드 추가해서 재실행해보자.

 

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.rc('font', family='NanumBarunGothic')
mpl.rcParams['axes.unicode_minus'] = False

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

new graph

 

예쁜 한글 파이팅 !!!

 

반응형

 

대! 한! 민! 국! 짜자자 짝!짝!

 

기본으로 제공되는 Ubuntu Docker Image는

우리에게 아름다운 한글을 제대로 지원해주지 않는다.

 

그래서 지금부터는 한글을 제대로 지원해주는 Ubuntu Docker Image를 만들어 보고자 한다.

 

 

0. 작업 환경

  - Ubuntu 18.04 Desktop

 

 

1. Docker 설치하기

  - 아래 링크를 참조하면 좋고~ 아니면 아래 과정을 주르륵 따라가도 좋다.

    . https://www.whatwant.com/entry/Docker-Install-Ubuntu-Server-2004

 

$ cd /srv/install
$ mkdir docker
$ cd docker

$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.4.8-1_amd64.deb
$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce-cli_20.10.7~3-0~ubuntu-focal_amd64.deb
$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce_20.10.7~3-0~ubuntu-focal_amd64.deb

$ sudo dpkg --install ./containerd.io_1.4.8-1_amd64.deb
$ sudo dpkg --install ./docker-ce-cli_20.10.7~3-0~ubuntu-focal_amd64.deb
$ sudo dpkg --install ./docker-ce_20.10.7~3-0~ubuntu-focal_amd64.deb

$ sudo usermod -aG docker $USER

로그아웃 후 로그인
(Ubuntu Desktop에서 로그아웃으로 안되어서 재시작해버렸음)

$ docker run hello-world

$ nano ~/.zshrc
plugins=(... docker docker-compose)

 

  - 마지막 부분은 개인적으로 zsh을 사용하고 있기에... 자동 완성 기능을 추가해보았다.

 

 

2. Ubuntu Docker Image - 기본

  - 개인 취향으로 기본 패키지들을 조금 더 추가하는 것으로 Dockerfile을 다음과 같이 만들어 봤다.

 

FROM ubuntu:18.04

RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y \
        nano \
        git \
        curl \
        htop \
        man \
        openssh-client \
        sudo \
        wget \
        procps \
        lsb-release

 

  - 위 내용을 `Dockerfile.default` 파일명으로 저장한 뒤 build 하고 run 해보자.

 

host$ docker build -t ubuntu:default -f Dockerfile.default .

host$ docker run -it ubuntu:default bash

 

  - 텍스트 파일을 하나 만들어서 한글을 입력해보자. (물론 제대로 출력이 안되는 것이 정상이다)

 

default$ cd

default$ nano noname.txt

 

 

3. Ubuntu Docker Image - 한글 지원

  - 이번에는 한글을 지원해줄 수 있는 Dockerfile을 작성해 보자.

 

FROM ubuntu:18.04

RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y \
        nano \
        git \
        curl \
        htop \
        man \
        openssh-client \
        sudo \
        wget \
        procps \
        lsb-release

RUN apt-get install -y apt-utils locales
RUN locale-gen ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8

 

  - 아래 부분만 추가해서 `Dockerfile.ko_KR` 파일명으로 저장하고 진행해보자

 

host$ docker build -t ubuntu:ko_KR -f Dockerfile.ko_KR .

host$ docker run -it ubuntu:ko_KR bash

 

  - 똑같이 한글이 써지는지 테스트해보자.

 

ko_KR$ cd

ko_KR$ nano noname.txt

 

  - 이번에는 당연히 한글이 잘 써질 것이다!!!

 

 

Ubuntu 자체가 가벼운 이미지가 아니긴 하지만...

그래도 편한 맛에 사용한다고 하면 한글 지원이 필요할 때 참고하면 좋을 듯 하다.

반응형

'잘난놈되기' 카테고리의 다른 글

NFS Server 설치 (Ubuntu 18.04/20.04)  (0) 2021.09.21
kubectl 설치 (in Ubuntu)  (0) 2021.08.30
bpytop 설치 (Ubuntu 18.04)  (0) 2020.12.31
하드디스크 용량 분석 (SpaceSniffer)  (0) 2020.12.28
Docker Hub 활용  (0) 2020.11.14

기본 한글입력기인 ibus를 사용하는 것은 왠지 불편하다.
그래서 대중적인, 리눅스를 사용하는 한국인이라면 왠지 다 알고 있어야 할 것 같은 nabi를 사용하곤 한다.

설치는 정말 쉽다.

sudo apt-get install nabi

그런 다음 [설정] - [언어 지원] - [키보드 입력기]를 선택하면 된다.


"Hangul"로 설정하고 나서 로그아웃/로그인 또는 재부팅을 하면 다음과 같은 팝업을 볼 수 있다.


이제는 편하게 한글을 사용하면 되긴 하는데... 여기에서 이슈는 저 팝업창을 없애버리고 싶은 충동이다!

12.04 버전까지만해도 시스템트레이로 옮기기를 하면 되었느데,
최근에는 이러한 기능을 공식적으로 지원하지 않는다. 지원하지 않는 것이 아니라 막았다고 보는 것이 맞을 것이다.

사실 이는 Ubuntu 측에서 지원하지 않는 것이 아니라 다른 방식을 지원하는 것이고,
새로운 방식을 nabi가 지원하지 않는다라는 것이 더 정확한 대답일 것이다.


물론 우리의 뛰어난 리눅서분들은 이러한 상황을 극복할 수 있는 방법들을 만들어내었다.
그런데, 좀 문제가 있는 것이... 기존 패키지 내용을 패치하는 방식을 통해서 해결을 하고 있는 것이다.
PPA 추가를 통해서 제공하지 않는 기능을 제공하도록 패치를 하는 것이다 보니
지속적으로 사용 가능한지에 대해서 보장을 할 수가 없다.


깔끔하게 사용하기 위해서는 IBus 방식을 사용하던지 아니면
그냥 위와 같이 별도의 팝업으로 뜨도록 내버려두는 것을 권장한다.

반응형

+ Recent posts