[python] Matplotlib에서 그림 제목 및 축 레이블 글꼴 크기를 어떻게 설정합니까?

Matplotlib에서 다음과 같이 그림을 만들고 있습니다.

from matplotlib import pyplot as plt

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')

그림 제목과 축 레이블의 글꼴 크기를 지정하고 싶습니다. 세 가지 모두 다른 글꼴 크기가되어야하므로 전역 글꼴 크기 ( mpl.rcParams['font.size']=x)를 설정하는 것이 원하는 것이 아닙니다. 그림 제목과 축 레이블의 글꼴 크기를 개별적으로 설정하려면 어떻게합니까?



답변

같은 텍스트 처리 기능 label, title등 같은 매개 변수를 허용 matplotlib.text.Text. 글꼴 크기의 경우 다음을 사용할 수 있습니다 size/fontsize.

from matplotlib import pyplot as plt

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title', fontsize=20)
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
fig.savefig('test.jpg')

전 세계적으로 설정 들어 titlelabel크기, mpl.rcParams포함 axes.titlesize하고 axes.labelsize. (페이지에서) :

axes.titlesize      : large   # fontsize of the axes title
axes.labelsize      : medium  # fontsize of the x any y labels

(내가 아는 한, 크기를 별도로 설정 x하고 y레이블 을 지정할 수있는 방법이 없습니다 .)

그리고 그것은 axes.titlesize영향을 미치지 않습니다 참조하십시오 suptitle. 수동으로 설정해야한다고 생각합니다.


답변

rcParams 사전을 통해 전역 적으로이 작업을 수행 할 수도 있습니다.

import matplotlib.pylab as pylab
params = {'legend.fontsize': 'x-large',
          'figure.figsize': (15, 5),
         'axes.labelsize': 'x-large',
         'axes.titlesize':'x-large',
         'xtick.labelsize':'x-large',
         'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)


답변

ax객체 를 사용 하여 플로팅을 수행 하는 데 더 익숙하다면 ax.xaxis.label.set_size()ipython 터미널에서 기억하기 쉽거나 적어도 탭을 사용하여 쉽게 찾을 수 있습니다. 효과를 확인한 후 다시 그리기 작업이 필요한 것 같습니다. 예를 들면 다음과 같습니다.

import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium')   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

자막 크기를 만든 후에 비슷한 방법을 모릅니다.


답변

축의 글꼴이 아닌 제목의 글꼴 만 수정하려면 다음을 사용했습니다.

import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})

fontdict는 matplotlib.text.Text의 모든 kwarg를 허용합니다 .


답변

공식 가이드 의 사용은 pylab더 이상 권장되지 않습니다. matplotlib.pyplot대신에 직접 사용해야합니다.

를 통해 전역 적으로 글꼴 크기 설정 rcParams

import matplotlib.pyplot as plt
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['axes.titlesize'] = 16

# or

params = {'axes.labelsize': 16,
          'axes.titlesize': 16}
plt.rcParams.update(params)

# or

import matplotlib as mpl
mpl.rc('axes', labelsize=16, titlesize=16)

# or 

axes = {'labelsize': 16,
        'titlesize': 16}
mpl.rc('axes', **axes)

다음을 사용하여 기본값을 복원 할 수 있습니다

plt.rcParams.update(plt.rcParamsDefault)

matplotlib 구성 디렉토리 아래의 디렉토리에 스타일 시트 를 작성하여이를 수행 할 수도 있습니다 (에서 구성 디렉토리를 가져올 수 있음 ). 스타일 시트 형식은stylelibmatplotlib.get_configdir()

axes.labelsize: 16
axes.titlesize: 16

스타일 시트가 있으면 /path/to/mpl_configdir/stylelib/mystyle.mplstyle다음을 통해 사용할 수 있습니다.

plt.style.use('mystyle')

# or, for a single section

with plt.style.context('mystyle'):
    # ...

형식을 공유 하는 matplotlibrc 파일 을 작성 (또는 수정) 할 수도 있습니다.

axes.labelsize = 16
axes.titlesize = 16

에 따라하면 이러한 변경 않은 모든 작업 디렉토리에, 단지 현재 작업 디렉토리에 사용되는 수정 파일 matplotlibrc 하지 matplotlibrc 파일을, 또는 않는 모든 작업 디렉토리 하지 다른 matplotlibrc 파일이없는 곳에 matplotlibrc 파일을 가지고 지정되었습니다. 자세한 내용은 matplotlib 사용자 정의 페이지 의이 섹션 을 참조하십시오.

전체 rcParams키 목록은을 통해 검색 할 수 plt.rcParams.keys()있지만 글꼴 크기를 조정하려면 ( 여기 에서 인용 된 영문 )

  • axes.labelsizex 및 y 라벨의 폰트 크기
  • axes.titlesize축 제목의 글꼴 크기
  • figure.titlesize그림 제목 크기 ( Figure.suptitle())
  • xtick.labelsize눈금 레이블의 글꼴 크기
  • ytick.labelsize눈금 레이블의 글꼴 크기
  • legend.fontsize-범례의 글꼴 크기 ( plt.legend(), fig.legend())
  • legend.title_fontsize-범례 제목의 글꼴 크기 None로 기본 축과 동일하게 설정됩니다. 사용 예는 이 답변 을 참조하십시오 .

모두 문자열 크기 {'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}또는 floatin 을 허용합니다 pt. 문자열 크기는 다음과 같이 지정된 기본 글꼴 크기를 기준으로 정의됩니다.

  • font.size텍스트의 기본 글꼴 크기 (pts) 10pt는 표준값입니다

또한 무게는 다음과 같이 지정 될 수 있습니다 (기본적으로 만 표시됨).

  • font.weight-에서 사용하는 글꼴의 기본 가중치입니다 text.Text. 수락 {100, 200, 300, 400, 500, 600, 700, 800, 900}하거나 'normal'(400), 'bold'(700), 'lighter''bolder'( 현재의 중량에 대해 상대적인 ).

답변

글꼴 크기를 변경하는 다른 방법은 패딩을 변경하는 것입니다. Python에서 PNG를 저장하면 열리는 대화 상자를 사용하여 레이아웃을 변경할 수 있습니다. 축 사이의 간격, 원하는 경우 패딩을이 단계에서 변경할 수 있습니다.


답변

장소 right_ax이전set_ylabel()

ax.right_ax.set_ylabel('AB scale')