Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

Passion, Grace & Fire.

pyplot: ticklabels, grid, major/minor ticks 본문

카테고리 없음

pyplot: ticklabels, grid, major/minor ticks

vincenthanna 2020. 12. 31. 08:30

tick에 배정되는 tick label의 문자열 변경은 get_yticklabels() / set_yticklabels() 함수를 이용하여 할 수 있다.

yticks = ax.get_yticks()
ax.set_yticks(yticks)
yticklabels = ax.get_yticklabels()
ax.set_yticklabels([f'{y:.0f} Value' for y in yticks], fontdict={"fontsize":16, "color":"black", "ha":"right", "va":"center"})

 

pyplot 그래프 출력 시 기존 tick과는 별도로 보조 tick을 출력할 수 있다.

major/minor tick의 간격은 set_major_locator()/set_minor_locator()함수를 사용한다.

주/부 구분은 tick 설정 시 minor 속성을 True/False로 지정해서 한다.

# yticks major/minor 설정
ax.yaxis.set_major_locator(MultipleLocator(2))
ax.yaxis.set_major_formatter('{x:.0f}')
ax.yaxis.set_minor_locator(MultipleLocator(1))
ax.yaxis.set_minor_formatter('{x:.0f}')

# yticks : major
yticks = ax.get_yticks()
ax.set_yticks(yticks)
yticklabels = ax.get_yticklabels()
ax.set_yticklabels([f'{y:.0f} Value' for y in yticks], fontdict={"fontsize":16, "color":"black", "ha":"right", "va":"center"})

# yticks : minor
yticks = ax.get_yticks(minor=True)
ax.set_yticks(yticks, minor=True)
yticklabels = ax.get_yticklabels(minor=True)
ax.set_yticklabels([f'{y:.0f} val' for y in yticks], fontdict={"fontsize":12, "color":"black", "ha":"right", "va":"center"}, minor=True)

 

Sample Code:

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import (MultipleLocator, AutoMinorLocator)
import seaborn as sns

sns.set_style("white")

a = np.arange(-np.math.pi, np.math.pi, step=0.02)
b = np.sin(a)
c = a * b

fig, ax = plt.subplots(figsize=(16, 6))
ax.plot(a, label="A")
ax.plot(b, label="B")
ax.plot(c, label="C")

# x,y 축 범위
ax.set_xlim(0, a.shape[0])
ax.set_ylim(-3.5, 3.5)

# ticks 출력 변경
xticks = ax.get_xticks()
ax.set_xticks(xticks)
xticklabels = [f'{x:.0f} Steps' for x in xticks]
ax.set_xticklabels(xticklabels, rotation=0)

# yticks major/minor 설정
ax.yaxis.set_major_locator(MultipleLocator(2))
ax.yaxis.set_major_formatter('{x:.0f}')
ax.yaxis.set_minor_locator(MultipleLocator(1))
ax.yaxis.set_minor_formatter('{x:.0f}')

# Grid
ax.grid(axis='y', which="major", color="0.2", alpha=0.5) # major
ax.grid(axis='y', which="minor", color="0.2", alpha=0.5, ls=":")# minor

# yticks : major
yticks = ax.get_yticks()
ax.set_yticks(yticks)
yticklabels = ax.get_yticklabels()
ax.set_yticklabels([f'{y:.0f} Value' for y in yticks], fontdict={"fontsize":16, "color":"black", "ha":"right", "va":"center"})

# yticks : minor
yticks = ax.get_yticks(minor=True)
ax.set_yticks(yticks, minor=True)
yticklabels = ax.get_yticklabels(minor=True)
ax.set_yticklabels([f'{y:.0f} val' for y in yticks], fontdict={"fontsize":12, "color":"black", "ha":"right", "va":"center"}, minor=True)

handles, labels = ax.get_legend_handles_labels()
l0 = ax.legend(handles=handles[:3], labels=["A cat", "B cat", "C cat"], ncol=2, loc="upper left", bbox_to_anchor=(0.0, 1.0))

pyplot with minor tick

Comments