0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Matplotlib 美しいグラフの描画

Last updated at Posted at 2020-08-06

#実行環境

  • Python 3.6.8
  • Matplotlib 3.1.2

#はじめに
matplotlibのスタイルには、
pyplot API と オブジェクト指向APIの2つがあり、pyplot APIは通常、オブジェクト指向APIよりも柔軟性が低くなる。

Pyplot tutorial

#例1:折れ線グラフの描画

import numpy as np
import matplotlib.pyplot as plt

# データの作成
def func(x):
    return 100*x*(1-x)

x1 = np.arange(0,1.01, 0.01)
y1 = func(x1)
x2 = np.arange(0, 1.1, 0.1)
y2 = x2 * 20

単純に折れ線グラフを描画する.

# グラフの描画
plt.plot(x1, y1)
plt.plot(x2, y2)
plt.show()

naive.png

ここに,軸のラベルと凡例を追加する.

# X軸、Y軸のラベル
plt.xlabel('X-AXIS')
plt.ylabel('Y-AXIS')

# グラフの描画
plt.plot(x1, y1, label='LABEL1')
plt.plot(x2, y2, label='LABEL2')

# 凡例
plt.legend()

# 表示
plt.show()

add_label.png

さらに,軸ラベル,目盛り,凡例の文字サイズを拡大する.

# サイズ変更
plt.figure(figsize=(6,4))

# X軸、Y軸のラベル
plt.xlabel('X-AXIS',fontsize=24,fontfamily='Times New Roman')
plt.ylabel('Y-AXIS',fontsize=24,fontfamily='Times New Roman')

# 目盛りを内側に向ける
plt.tick_params(direction='in',labelsize=16)

# グラフの描画
#   マーカーの種類は 'o': 円, 'D': ひし形, 's': 正方形
plt.plot(x1, y1, label='LABEL1', c='blue', linewidth=2)
plt.plot(x2, y2, label='LABEL2', c='red', linewidth=2, marker='o', markersize=10)

# 凡例
leg = plt.legend(
    loc='upper left',  #位置 lower/center/upper, left/center/right で指定
    fontsize=18, # フォントサイズ
    ncol=1, # 列数を指定
    fancybox=False, # Trueだと角が丸くなる, デフォルトはTrue
    edgecolor='black' # 境界線の色
)
leg.get_frame().set_alpha(1.0) # 凡例の矩形を不透明にする, デフォルトは半透明になっている

# 表示
plt.show()

change_size.png

さらにさらに,拡張性を考慮してsubplotを用いる.

# サイズ変更
fig = plt.figure(figsize=(6,4))
ax = plt.subplot(111)

# X軸、Y軸のラベル
ax.set_xlabel('X-AXIS',fontsize=24,fontfamily='Times New Roman')
ax.set_ylabel('Y-AXIS',fontsize=24,fontfamily='Times New Roman')

# 目盛りを内側に向ける
ax.tick_params(direction='in',labelsize=16)

# グラフの描画
#   マーカーの種類は 'o': 円, 'D': ひし形, 's': 正方形
ax.plot(x1, y1, label='LABEL1', c='blue', linewidth=2)
ax.plot(x2, y2, label='LABEL2', c='red', linewidth=2, marker='o', markersize=10)

# 凡例
leg = plt.legend(
    loc='upper left',  #位置 lower/center/upper, left/center/right で指定
    fontsize=18, # フォントサイズ
    ncol=1, # 列数を指定
    fancybox=False, # Trueだと角が丸くなる, デフォルトはTrue
    edgecolor='black' # 境界線の色
)
leg.get_frame().set_alpha(1.0) # 凡例の矩形を不透明にする, デフォルトは半透明になっている
# グリッド線の表示, デフォルトでは透明度0%, ラインスタイルを破線にする
ax.grid(alpha=0.2,ls='--')

# 表示
fig.show()
fig.savefig('subplot',bbox_inches='tight')

subplot.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?