LoginSignup
8
8

More than 3 years have passed since last update.

Matplotlibについて

Last updated at Posted at 2021-04-07

Matplotlibについて

今回はmatplotlibについてまとめましたのでpandas同様に共有していきます。
要点だけまとめております。

Matplotlibとは

matplotlibは、プログラミング言語Python及びその科学計算用ライブラリNumpyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のグラフを描画する(プロット)だが、3次元のグラフを描画する(プロット)機能も追加されてきている。

Matplotlibでできること

  • 折線グラフと散布図の描画
  • グラフを並べて表示するsubplotsメソッド
  • 円グラフ
  • 棒グラフ

以上のデータの可視化をすることが可能。

インストール

qiita.py
$ pip install matplotlib

インポート

ライブラリインポート。
今回はnumpyとpandasも利用しますのであらかじめインポートしておきます。

qiita.py
$ import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  %matplolib inline

散布図

matplotlibでは散布図を作成することが可能です。
その前にまずデータフレームを作成します。

qiita.py
# 適当に値とindex、columnsを用意
$ df = pd.DataFrame([[21, 13, 32, 44, 54], [50, 49, 38, 29, 10], [55, 44, 33, 11, 35], [66, 27, 38, 49, 70], [51, 62, 73, 84, 95]],
index=['A', 'B', 'C', 'D', 'E'], columns=['A1', 'B2', 'C3', 'D4', 'E5'])

スクリーンショット 2021-04-02 1.25.29.png

qiita.py
# 散布図(scatter)
# xlabelを'B2'でylabelを'A1'と置いた時
$ plt.scatter(df['B2'], df['A1'])

スクリーンショット 2021-04-02 1.27.59.png

はい!出力することができました!

ヒストグラム

ヒストグラムではplt.hist(df['カラム名'])で出力することができます。
散布図と似ているので覚えやすいかと思います!
ヒストグラムでは「データの散らばり」を確認することができます。
binsという幅を指定することで広く狭くデータを確認することができるので一度やってみてください。

qiita.py
$ plt.hist(df['D4'])

スクリーンショット 2021-04-02 1.34.33.png

折線グラフ

今回は(x, y)のような折線グラフを作成します。

qiita.py
# xの値
# np.linspaceは指定した値をx等分することが可能
$ x = np.linspace(1, 100, 100)
  y = 2*x
  plt.plot(x, y)
# plt.grid()でグリッド線を追加
  plt.grid()

スクリーンショット 2021-04-03 0.43.01.png

次は反比例を作ります。

qiita.py
$ y_1 = 1/x
  plt.plot(x, y_1)
  plt.grid()

スクリーンショット 2021-04-03 0.44.40.png

次に二次関数を作ります。

qiita.py
$ y_2 = 5*x*x
  plt.plot(x, y_2)
  plt.grid()

スクリーンショット 2021-04-03 0.46.20.png

subplotによる複数のグラフを並べる

先程作成した折線グラフと反比例のグラフ、二次関数のグラフをsubplotを使って複数同時に並べます。
また、タイトルやカラー、スペースなども同時に紹介します。

qiita.py
# 折線グラフと反比例グラフを並べる
$ plt.subplot(121)
# カラー指定
plt.plot(x, y, color='blue')
plt.grid()
# タイトル指定
plt.title('Linear function')

plt.subplot(122)
# カラー指定
plt.plot(x, y_1, color='red')
plt.grid()
# タイトル指定
plt.title('Inverse proportional')

# 横のスペース指定
plt.subplots_adjust(wspace=0.5)

# 全体の大きさ
plt.figure(figsize=(9, 3))

# グラフ上部の位置変更
plt.subplots_adjust(top=0.8)

スクリーンショット 2021-04-03 1.21.35.png

最後に3つを並べます!

qiita.py
$ plt.subplot(121)
plt.plot(x, y, color='blue')
plt.grid()

plt.subplot(222)
plt.plot(x, y_1, color='red')
plt.grid()

# 二次関数
plt.subplot(224)
plt.plot(x, y_2, color='yellow')
plt.grid()

# 横のスペース指定
plt.subplots_adjust(wspace=0.5)
# 全体のタイトルと文字の大きさ指定
plt.suptitle('The entire', fontsize=18)

スクリーンショット 2021-04-03 1.26.47.png

円グラフ

次に円グラフについてです。
まず作成してみますが、「ラベル」と「サイズ」を指定してみます。

qiita.py
# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]

plt.pie(sizes, labels=labels)

plt.show()

スクリーンショット 2021-04-07 22.54.41.png

次に円グラフの切り離しを行います。

qiita.py
# 円グラフ切り離し
# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 切り離し
explode = (0, 0.1, 0.05, 0)

plt.pie(sizes, labels=labels, explode=explode)

plt.show()

スクリーンショット 2021-04-07 22.56.35.png

現在反時計回りになっているので時計回りに直します。

qiita.py
# 円グラフ時計回り

# 円グラフ

# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 時計回り(counterclock)
plt.pie(sizes, labels=labels, counterclock=False)

plt.show()

スクリーンショット 2021-04-07 22.59.39.png

次に円グラフに影をつけます。

qiita.py
# 円グラフ影をつける

# 円グラフ

# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 切り離し
explode = (0, 0.1, 0.05, 0)

# 影をつける(shadow=True)
plt.pie(sizes, labels=labels, explode=explode, counterclock=False, shadow=True)

plt.show()

スクリーンショット 2021-04-07 23.04.09.png

次に値をグラフ内に表示します。

qiita.py
# 値を円グラフ内に表示
# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 切り離し
explode = (0, 0.1, 0.05, 0)

# 値を設定(autopct)
plt.pie(sizes, labels=labels, explode=explode, counterclock=False, shadow=True, autopct='%1.1f%%')

plt.show()

スクリーンショット 2021-04-07 23.01.29.png

次にドーナツ状にします。

qiita.py
# ドーナツ

# 円グラフ

# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 切り離し
explode = (0, 0.1, 0.05, 0)
# ドーナツサイズ
size = 0.5

# ドーナツ状へ設定(wedgeprop)
plt.pie(sizes, labels=labels, explode=explode, counterclock=False, shadow=True, autopct='%1.1f%%', wedgeprops=dict(width=size, edgecolor='w'))

plt.show()

スクリーンショット 2021-04-07 23.05.55.png

次に半径の円グラフを表示します。

qiita.py
# 半径

# 円グラフ

# ラベル指定
labels = ['A', 'B', 'C', 'D']
# サイズ指定
sizes = [15, 30, 35, 10]
# 切り離し
explode = (0, 0.1, 0.05, 0)
# 半径(円型)サイズ
size = 0.5

# 半径設定(radius)
plt.pie(sizes, labels=labels, explode=explode, counterclock=False, shadow=True, autopct='%1.1f%%', wedgeprops=dict(width=size, edgecolor='w'), radius=2)

plt.show()

スクリーンショット 2021-04-07 23.08.06.png

棒グラフ

最後に棒グラフをプロットして終わります!!

qiita.py
# 棒グラフ

plt.bar(x, y)

スクリーンショット 2021-04-07 23.10.37.png

qiita.py
a = (np.linspace(1, 100, 10))
b = (np.linspace(1, 100, 10))

plt.bar(a, b)
plt.grid()
plt.title('bin')
plt.show()

スクリーンショット 2021-04-07 23.14.42.png

最後に

今回はmatplotlibについてまとめました!
次回は機械学習の線形回帰について私個人のわかる範囲で共有していこうと思います!!

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