1
0

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の基本的なグラフ設定を列挙〜棒グラフと円グラフ〜

Posted at

はじめに

pythonでグラフを作成するときの定番はmatplotlibですが、設定項目が多いのでいちいち調べて使うのは大変です。
基本の使用方法を列挙して、すぐに使えるようにしておこうと思います。

参考

環境

  • Google colab
  • matplotlib==3.0.2

手順

棒グラフ

棒グラフはplt.barで表示できます。x軸に指定した値を中心として、デフォルト幅0.8の棒を表示します。

import matplotlib.pyplot as plt

# 表示するデータ
Y = [4,15,8]
X = range(len(X))

# グラフの大きさ指定
plt.figure(figsize=(10, 5))

# 棒グラフを中央寄せで表示
plt.bar(X, Y, align="center", width=0.8)

# グラフのラベル
plt.xticks(X, ['A','B','C'])

# XとYのラベル
plt.xlabel("x-axis label")
plt.ylabel("y-axis label")

# タイトル表示
plt.title('title', fontsize=15)

# グリッド線を表示
plt.grid(True)
スクリーンショット 2018-12-13 0.24.26.png

alignのパラメータをedgeに変えると、xの値を左端にするように棒を表示します。
スクリーンショット 2018-12-13 0.28.28.png

横向き棒グラフ

横向き棒グラフでは、棒グラフのwidthに相当するものはheightになります。また、データXがy軸に並ぶので、データXのラベルをy軸ラベルにする必要があります。

import matplotlib.pyplot as plt

# 表示するデータ
Y = [4,15,8]
X = range(len(Y))

# グラフの大きさ指定
plt.figure(figsize=(10, 5))

# 棒グラフを中央寄せで表示
plt.barh(X, Y, align="center", height=0.8)

# グラフのラベル
plt.yticks(X, ['A','B','C']) # データXがy軸に表示されていることに注意

# XとYのラベル
plt.xlabel("x-axis label")
plt.ylabel("y-axis label")

# タイトル表示
plt.title('title', fontsize=15)

# グリッド線を表示
plt.grid(True)
スクリーンショット 2018-12-13 0.31.36.png

グラフを複数表示

import matplotlib.pyplot as plt
import numpy as np

Y1 = np.array([10,20,30])
Y2 = np.array([50,60,20])
Y3 = np.array([30,20,10])
N = 3 # y軸データの種類数

X = np.arange(len(Y1))

# 棒の幅
w = 0.8 / N

# グラフの大きさ指定
plt.figure(figsize=(10, 5))

plt.bar(X, Y1, color='xkcd:sky blue', width=w, label='Kinoko', align="center")
plt.bar(X + w, Y2, color='xkcd:turquoise', width=w, label='Takenoko', align="center")
plt.bar(X + 2*w, Y3, color='xkcd:grey blue', width=w, label='Pokky', align="center")

# 凡例を配置 bestだと最適な位置に表示
plt.legend(loc="best")

# 棒のグループにラベル貼り付け
plt.xticks(X + (N-1)/2*w, ['Tokyo','Osaka','Nagoya'])

# XとYのラベル
plt.xlabel("City")
plt.ylabel("Love")

# タイトル表示
plt.title('Kinoko Takenoko War', fontsize=15)

# グリッド線を表示
plt.grid(True)
スクリーンショット 2018-12-13 0.54.46.png

今回、棒の色はxkcd color name surveyというのから選択しました。xkcd:の後に色名を指定すればその色に設定できます。ちなみにcolorを設定しない場合は自動で色を割り当ててくれます。

積み上げ棒グラフ

bottomに棒が始まる位置を指定できます。積み上げる位置を指定することで積み上げ棒グラフを作成できます。

import matplotlib.pyplot as plt

# 表示するデータ
Y1 = [4,15,8]
Y2 = [10,2,4]
X = range(len(Y1))

# グラフの大きさ指定
plt.figure(figsize=(10, 5))

# bottomに積み上げる位置を指定する。
plt.bar(X, Y1, align="center", label='AAA')
plt.bar(X, Y2, align="center", bottom=Y1, label='BBB')

# グラフそれぞれのレベル
plt.xticks(X, ['A','B','C']) # データXがy軸に表示されていることに注意

# XとYのラベル
plt.xlabel("x-axis label")
plt.ylabel("y-axis label")

# タイトル表示
plt.title('title', fontsize=15)

# 凡例を配置 bestだと最適な位置に表示
plt.legend(loc="best")

# グリッド線を表示
plt.grid(True)
スクリーンショット 2018-12-13 1.03.43.png

円グラフ

import matplotlib.pyplot as plt

# 表示するデータ
data = [45, 30, 22, 10]

# データのラベル
labels = 'A', 'B', 'C', 'D'

# 色
cmap = plt.get_cmap('tab10') # Tableauの基本10色を使用
colors = [cmap(i) for i in range(len(data))]

# パーツの間隔
explode = (0.1, 0., 0., 0.) 

# グラフの大きさ指定
plt.figure(figsize=(10, 5))

# startangleは開始する角度、counterclockは向きを指定、
# autopctは構成割合で少数点第一位まで表示、shadowはグラフを影付きにする
plt.pie(data, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90, counterclock=False)

# 真円で表示するためにアスペクト比を1対1にする
plt.axis('equal')
スクリーンショット 2018-12-13 1.22.40.png

今回はcmapTableauと呼ばれるソフトウェアのカラーパレットを取得して、そこから色を指定してみました。

バブルチャート

散布図をプロットし、点の大きさを調整することでバブルチャートにすることができます。

import numpy as np
import matplotlib.pyplot as plt

# X,Y軸
x = [0.2, 0.1, 0.6, 0.3, 0.2, 0.9, 0.1, 0.3, 0.3, 0.7]
y = [0.5, 0.6, 0.1, 0.3, 0.9, 0.7, 0.4, 0.6, 0.3, 0.5]
data = np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

# color番号
colors = [cmap(i) for i in range(len(data))]

# バブルの大きさ
area = 10000 * np.pi * data**2

# グラフの大きさ指定
plt.figure(figsize=(15, 6))

plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.grid(True)
スクリーンショット 2018-12-13 1.38.18.png
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?