파이썬 matplotlib의 광적인 메모

16217 단어 파이썬matplotlib

matplotlib 자신의 비망록



하고 싶은 것이 틈새 지나서 조사해도 좀처럼 발견되지 않는다…
어떻게든 해결책을 찾았지만 다시 한번 같은 일을 조사할 기력은 없다…

자신이 가렵다고 생각한 곳에 손이 닿게 된 해결책들을 기록합니다.

※ 코드를 복사하면 그대로 움직일지 어떨지는 보증할 수 없습니다.
※ 그래도 어느 정도 matplotlib에 익숙한 사람들이라면 괜찮다고 생각합니다.
※ 원래 자신용으로 부분적으로 복사할 수 있도록 쓰려고 생각한 것이므로 거기엔은 용서해 주세요…

그래프 해상도와 dpi 지정


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(w/dpi, h/dpi), dpi=dpi, facecolor='white')
w, h = 1920, 1080 라고 지정하면 FHD 모니터 가득 차트를 만들 수 있다

그래프에 텍스트 삽입




# フォントサイズを変更
plt.rcParams['font.size'] = '5'

fig = plt.figure(figsize=(w/dpi, h/dpi), dpi=dpi, facecolor='white')
ax = fig.add_subplot(111)

# グラフ左上に原点左上&左寄せのテキストを表示
plt.text(0.01, 0.98,
          'left top',
          horizontalalignment='left',
          verticalalignment='top',
          size=10, # fontsize
          ha='left', va='top',
          transform=ax.transAxes, zorder=1)

# 右上
plt.text(0.99, 0.98,
          'right top',
          horizontalalignment='right',
          verticalalignment='top',
          size=10,
          ha='right', va='top',
          transform=ax.transAxes, zorder=1)

# 左下
plt.text(0.01, 0.01,
          'left bot',
          horizontalalignment='left',
          verticalalignment='bottom',
          size=10,
          ha='left', va='bottom',
          transform=ax.transAxes, zorder=1)

# 右下
plt.text(0.98, 0.01,
          'right bot',
          horizontalalignment='right',
          verticalalignment='bottom',
          size=10,
          ha='right', va='bottom',
          transform=ax.transAxes, zorder=1)


그래프 부분만을 지정한 해상도 정확하게 출력하고 싶다



여백도 축도 라벨도 모두 지우고 싶다, 그래프만 출력하고 싶다(어휘력)

직장에서 기계 학습을위한 원본 데이터를 만들 때 어려운 가려운 곳

만들고 싶었던 것은 ↓ 이런 느낌의 검은 배경에 RGB 1 개씩의 그래프

크기는 60px * 60px
import matplotlib.pyplot as plt
import numpy as np

w , h = 60, 60
dpi = 300
aa = True

plt.clf()
fig = plt.figure(figsize=(w/dpi, h/dpi), dpi=dpi)
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax3 = ax1.twinx()

# 全ての軸を非表示
ax = plt.gca()
plt.axis('off')
ax.axis('off')
ax1.axis('off')
ax2.axis('off')

ax1.plot(np.random.rand(60), lw=lw, color=[1.0, 0.0, 0.0], antialiased=aa)
ax2.plot(np.random.rand(60), lw=lw, color=[0.0, 1.0, 0.0], antialiased=aa)
ax3.plot(np.random.rand(60), lw=lw, color=[0.0, 0.0, 1.0], antialiased=aa)

plt.xlim([0, 59])
# 上下左右の余白を削除
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)

# グラフの枠も削除
plt.box(False)

plt.savefig(pathfile, dpi=dpi, facecolor='black')

plt.clf()
plt.close(fig)

↓ 보존 결과

이것이라면 기계 학습에도 사용할 수 있을 것!

그래프를 저장했을 때 라벨이나 제목을 볼 수 없게 한다


w, h, dpi 를 스스로 지정해 그래프 보존하면
x, y의 라벨이나 타이틀이 끊어 버린다…


그럴 때는 이것
plt.savefig(pathfile, dpi=dpi, facecolor='white', bbox_inches='tight', pad_inches=0.1)  
bbox_inches='tight'pad_inches=0.1가 중요합니다.

↓ 보존 결과

pad_inches 의 값을 크게 하면 지정한 해상도보다 커지므로 주의해 주세요

pad_inches0.5 로 했을 경우의 보존 결과


추가 예정인 가려운 곳


  • 꺾은 선 그래프로 지정한 값보다 큰 or 작은 부분의 선의 색을 변경하고 싶다
  • 자산 곡선 등으로 손익이 0 엔을 밑도는 부분을 적색으로하고 싶을 때 ...


  • 이 밖에도 있으면 매번 추기해 갑니다

    좋은 웹페이지 즐겨찾기