Misaki_yuyyuyu’s blog

好きなものを紹介したり備忘録のため

matplotlibでの細かい描画設定

f:id:Misaki_yuyyuyu:20170730190521p:plain
みんな大好きmatplotlib

覚えきれなくなってきたので、自分用メモとしてまとめます。

文字制御

上付き・下付き文字の大きさ変更

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.mathtext.SHRINK_FACTOR = 0.5
matplotlib.mathtext.GROW_FACTOR = 1 / 0.5

このSHRINK_FACTORなどの数字を変えればOK
matplotlibではtexの\tiny,\HUGEコマンドなどが使えない・・・

軸調整

x軸y軸などの目盛大きさを変更

ax1.tick_params(axis='x', labelsize=20)
ax1.tick_params(axis='y', labelsize=20)

plt.subplots()などで作ったax1のアトリビュートを変えればOK

主目盛と小目盛の長さ・太さを指定

ax2.tick_params(which='major',width = 1.0, length = 10)
plt.tick_params(which='minor',width = 0.5, length = 5)

x軸の目盛間隔を指定

plt.xticks([0.60,0.70,0.80,0.90,1.00])
minor_ticks=[0.55,0.65,0.75,0.85,0.95]
ax1.set_xticks(minor_ticks,minor=True)
ax1.xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

めちゃくちゃ汚い書き方だ

軸の有効数字を指定

ax1.xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

(0.6を0.600みたいに書きたいとき役に立つ)

レジェンド

レジェンドの枠線を消す

plt.legend(frameon=False)

レジェンドのscatterpointsを一つに

legend(scatterpoints = 1)

デフォで3つ(なぜ三つなのだ・・・

レジェンドの位置指定

1~10の数字で、図の右上にレジェンドを~とか左下に~とかいうふうに指定することができる。
ただ、この数字の並びが厄介でいつも忘れるので図にまとめた
f:id:Misaki_yuyyuyu:20170730014945p:plain
ユーザーをおちょくってるとしか思えない。

ちなみに詳細な位置指定はloc=(0.8,0.6)のような形でできる。
このとき「legendの左下がxmax×0.8,ymax×0.6が来るような位置」という意味

その他

グラフから文字がはみ出る!

plt.tight_layout()

図にinsetを追加

fig = plt.figure()
left, bottom, width, height = [0.6, 0.6, 0.3, 0.3]
ax2 = fig.add_axes([left, bottom, width, height])

解像度指定

plt.savefig('fuck.tif', dpi=600)

図にテキストを追加

ax1.text(10.5, 10, r'本宮佳奈たそは俺の嫁', fontsize=20,color='darkcyan')

ここで最初のx,yは図のx,yの値に準拠