5
7

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 5 years have passed since last update.

matplotlibで描画する方法

Last updated at Posted at 2018-09-07

matplotlibでグラフを描画

matplotlibで描画する方法を紹介していきます.
jupyterを使用して書いています.
よく書き方を忘れるので自分用の忘備録の意味も込めて書いていきます.
つらつらと追加しているので読みづらいかもしれません.
全てを理解して書いていないところがあったりするので間違っていたら教えてください.

  • 2018/09/08 初書き

開発環境

2018/09/08現在

  • OS: Mac OS X EI Capitan (10.11.6)
  • Python 3.7.0
  • matplotlib 2.2.3
  • jupyter
  • pandas 0.23.4

準備

%matplotlib inline #jupyter(notebook,lab)を使用する時は記載
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

基本的な設定

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.show()

base.png
何も設定しない状態だとこのような図が描画されます.

図の大きさ

fig = plt.figure(
    figsize = (16,9), #縦横比を変更(横,縦)
    facecolor = 'white' #後ろの色を変更できます.デフォルトは透明
)

複数描画

ax1 = fig.add_subplot(2,2,1)#(行,列,番号)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

download-2.png

図の体裁

fig = plt.figure(facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=15)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-10,10) #y軸の範囲指定
ax.set_xlim(-20,20) #x軸の範囲指定
ax.grid()#グリッド描画
plt.show()

download-4.png

散布図

from numpy.random import *
x = rand(100)
y = rand(100)
fig = plt.figure(facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.plot(x,y,'o')
plt.show()

download-3.png
## 散布図+折れ線図

x = np.arange(0,10,1)
y = np.arange(0,10,1)
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=25)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-1,10)
ax.set_xlim(-1,10)
ax.grid()
ax.plot(x,y,'o-',ms=20,lw=6,c='blue',label='test')
ax.legend(fontsize=30)
plt.show()

download-5.png

目盛りを任意の幅で変更

import matplotlib.ticker as ticker
x = np.arange(0,10,1)
y = np.arange(0,10,1)
co = 'black'
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=25)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-1,10)
ax.set_xlim(-1,10)
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.2))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(0.2))
ax.grid()
ax.plot(x,y,'o-',ms=20,lw=6,c='blue',label='test')
ax.legend(fontsize=30)
plt.show()

グラフの目盛りを任意の幅に変更したい時の方法(ついでにグリッドの幅も変更できます)
download-4.png

棒グラフの設定

from numpy.random import *
data1 = randint(1,10,5)
data2 = randint(1,10,5)
data3 = rand(5)
data4 = rand(5)
X = np.arange(0,5,1)
plt.rcParams['font.family'] = 'Times New Roman' #全体のフォントを変更できる
plt.rcParams['font.size'] = 20 #全体のフォントサイズを設定,個別での設定はその時に
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.bar(X+0.2, data1, yerr=data3, color='blue', ecolor='black', width=0.35, label='data1')
ax.bar(X-0.2, data2, yerr=data4, color='orange', ecolor='black', width=0.35, label='data3')
ax.legend(bbox_to_anchor=(1, 1),fontsize=25) #凡例を描画する
ax.set_ylabel('y label', fontsize=25) #軸のラベルを描画
ax.set_xlabel('x label', fontsize=25)
ax.set_ylim(0,10) #グラフの描画する範囲を変更
ax.set_xticks(X) #目盛りを描画する位置を決定
ax.set_xticklabels(['A','B','C','D','E'], fontsize=20)
plt.show()

自分がよく使う棒グラフの書き方です
download-5.png

5
7
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
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?