めもてふ

Python, Latex, Fortranを取り扱います

Seabornで(折れ)線グラフを書くときのテンプレート

Seabornで普通の(折れ)線グラフを書くときのテンプレート
※SeabornとはMatplotlibのグラフをより美しく描画するためのPythonのモジュールである。Anacondaを使っている人はpip install seabornでインストールできる。

import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns

if __name__ == '__main__':
    x = np.arange(0., 2 * np.pi, 0.01)
    y = np.sin(x)

    # フォントの設定
    #(グラフのタイトルで日本語を打ちたいときはフォントの指定が必要)
    sns.set(font="Circle M+ 1c")
    

    # ここからグラフの設定
    sns.set_style("white") # 注釈1参照
    sns.set_context("notebook", font_scale=1.7) # 注釈2参照
    #plt.rcParams["figure.figsize"] = 12, 9 # 12インチx9インチで出力
    #plt.rcParams["figure.dpi"] = 200 # 出力時の解像度
    plt.rcParams["savefig.dpi"] = 500 # 保存時の解像度


    # -----ちょろっと簡単なグラフを書くとき -----
    plt.plot(x, y)
    # タイトルや軸ラベルではLatex表記が使える
    plt.title("正弦関数のグラフ")
    plt.xlabel("$x$"); plt.xlim(0,2*np.pi)
    plt.ylabel("$\sin(x)$"); plt.ylim(-1,1)
    plt.savefig("gurahu.png")
    plt.show()
    # ---------- ここまで ----------

    plt.close() # 一旦matplotlibをリセット


    # -- 縦横比を調節する等こだわりのグラフを書くとき --
    fig = plt.figure()
    f_11 = fig.add_subplot(111) # 縦1列 横1列 の1番目のグラフ
    # f_11 = fig.add_subplot(1,1,1) と書いてもよい
    f_11.plot(x, y)
    f_11.set_xlabel("$x$"); f_11.set_xlim(0,2*np.pi)
    f_11.set_ylabel("$\sin(x)$"); f_11.set_ylim(-1,1)
    f_11.set_title("正弦関数のグラフ")
    f_11.set_aspect(2)
    # 縦横比を決める。中身が2の時は横が縦に対して2倍になる
    fig.savefig("gurahu.png")
    fig.show()
    # ---------- ここまで ----------

※1 sns.set_styleの第1引数はグラフの大まかな見た目を決めるもの
"darkgrid", "whitegrid", "dark", "white", "ticks"の5種類から選べる。 - "darkgrid"
f:id:kg15m:20160731195902p:plain - "whitegrid"
f:id:kg15m:20160731195907p:plain - "dark"
f:id:kg15m:20160731195859p:plain - "white"
f:id:kg15m:20160731195905p:plain - "ticks"
f:id:kg15m:20160731195903p:plain

※2 sns.set_contextの第1引数は 「このグラフは論文向けかプレゼン向けか」を設定するためのもの "paper""notebook"、"talk"、"poster"の4種類から選べる。デフォルトは"notebook"

sns.set_style()の第2引数で設定できるのはこんな感じ。python3を使ってる時はfont系の文字列の前のuは多分いらないと思う。

{'axes.axisbelow': True,
 'axes.edgecolor': '.8',
 'axes.facecolor': 'white',
 'axes.grid': True,
 'axes.labelcolor': '.15',
 'axes.linewidth': 1.0,
 'figure.facecolor': 'white',
 'font.family': [u'sans-serif'],
 'font.sans-serif': [u'Arial',
  u'Liberation Sans',
  u'Bitstream Vera Sans',
  u'sans-serif'],
 'grid.color': '.8',
 'grid.linestyle': u'-',
 'image.cmap': u'Greys',
 'legend.frameon': False,
 'legend.numpoints': 1,
 'legend.scatterpoints': 1,
 'lines.solid_capstyle': u'round',
 'text.color': '.15',
 'xtick.color': '.15',
 'xtick.direction': u'out',
 'xtick.major.size': 0.0,
 'xtick.minor.size': 0.0,
 'ytick.color': '.15',
 'ytick.direction': u'out',
 'ytick.major.size': 0.0,
 'ytick.minor.size': 0.0}