Aidemy Matplotlib基礎
乱数の生成
シードを設定する
code:Python
import numpy as np
# X,Yにそれぞれ5つの乱数を格納
X = np.random.randn(5)
Y = np.random.randn(5)
print("シードを設定しない場合")
print("X:", X)
print("Y:", Y)
# シードを設定
np.random.seed(0)
# 乱数列を変数に代入
x = np.random.randn(5)
# 同じシードを与えて初期化
np.random.seed(0)
y = np.random.randn(5)
# x,yの値を出力し、一致するか確認
print("シードを設定した場合")
print("x:", x)
print("y:", y)
--------------------------------------------------------------------------
シードを設定しない場合
シードを設定した場合
--------------------------------------------------------------------------
正規分布に従う乱数を生成する
code:Python
# numpy.random.randn()で生成した数値をプロットしたヒストグラムは正規分布と呼ばれる式のグラフに近い形をしている
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
# 正規分布に従う乱数を10000個生成
x = np.random.randn(10000)
plt.hist(x, bins='auto')
plt.show()
https://gyazo.com/a105d28586d5c88259195212b478fa41
二項分布に従う乱数を生成する
code: Python
# numpy.random.binomial(n, p, size)に整数nと0以上1以下の実数pを渡すと、渡した整数nの回数だけ成功率pの試行を行い、成功する回数を返す.第3引数にsize=整数値を渡すと、n回試行したときの成功数を指定した整数値分だけ返す
import numpy as np
np.random.seed(0)
# 0.5の確率で成功する試行を100回行なったときの成功数を10000回にする
nums = np.random.binomial(100, 0.5, size = 10000)
# 成功率の平均
print(nums.mean()/100)
--------------------------------------------------------------------------
0.49832
--------------------------------------------------------------------------
リストからランダムに選択する
code: Python
# numpy.random.choice()にリスト型のデータxと整数値nを渡すと、渡したリスト型のデータの中からランダムに選んだ結果を渡した整数値の数(n)だけ返す
import numpy as np
np.random.seed(0)
# xの中からランダムに5個選ぶ
y = np.random.choice(x, 5)
print(y)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
datetime型
datetime型
code: Python
# datetime.datetime(年, 月, 日, 時, 分, 秒, ミリ秒)
import datetime as dt
# 1992年10月22日を表すdatetimeオブジェクトを作成
x = dt.datetime(1992, 10, 22)
print(x)
--------------------------------------------------------------------------
1992-10-22 00:00:00
--------------------------------------------------------------------------
timedelta型
code: Python
# datetime.timedelta(日, 秒)の順で指定することで指定した時間を表すtimedeltaオブジェクトを返します。hours=4, minutes=10などのように指定することで時間や分単位の指定ができる
import datetime as dt
# 1時間半を表すtimedeltaオブジェクトを作成
x = dt.timedelta(hours = 1.5)
print(x)
--------------------------------------------------------------------------
1:30:00
--------------------------------------------------------------------------
datetime型とtimedelta型の演算
code: Python
# datetimeオブジェクトとtimedeltaオブジェクト同士を足し引きすることができる.timedelta型は整数倍したり、timedelta型同士で演算することもできる
import datetime as dt
# 1992年10月22日を表すdatetimeオブジェクトを作成
x = dt.datetime(1992, 10, 22)
# xから1日後を表すdatetimeオブジェクトを作成
y = x + dt.timedelta(1)
# 出力
print(y)
--------------------------------------------------------------------------
1992-10-23 00:00:00
--------------------------------------------------------------------------
時を表す文字列からdatetimeオブジェクトを作成する
code: Python
# 文字列sが"年-月-日 時-分-秒"の形式の場合、datetime.datetime.strptime(s, "%Y-%m-%d %H-%M-%S")とするとdatetimeオブジェクトを生成して返す
import datetime as dt
# sに1992年10月22日を表す文字列を"年-月-日"の形式にする
s = "1992-10-22"
# sを変換して、1992年10月22日を表すdatetimeオブジェクトを作成
x = dt.datetime.strptime(s, "%Y-%m-%d")
print(x)
--------------------------------------------------------------------------
1992-10-22 00:00:00
--------------------------------------------------------------------------
Matplotlibによるデータの可視化
文字列型から数値型へ型変換する
code: Python
x = '64'
y = '16'
z = int(x) + int(y)
print(z)
--------------------------------------------------------------------------
80
--------------------------------------------------------------------------
等間隔の数列を生成する1
code: Python
# numpy.arange(始まりの値, 終わりの値, 間隔の値)とすると 始まりから終わりの直前までの数値を指定した間隔で返す
import numpy as np
# xに0から10までの偶数列を生成
x = np.arange(0, 11, 2)
print(x)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
等間隔の数列を生成する2
code: Python
# numpy.linspace()に初め、終わり、分割したい個数の数値を渡すと、指定した個数に分割する点を返す
import numpy as np
# 0から10までの範囲を等間隔にわける5点を生成
x = np.linspace(0, 10, 5)
print(x)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
グラフにデータをプロットする
code: Python
# matplotlib.pyplot.plot(x軸に対応するデータ, y軸に対応するデータ) を用いることでグラフのx軸(横軸)とy軸(縦軸)にデータを簡単に対応させてグラフを作成することができる
# その後、matplotlib.pyplot.show()を使うことで画面上に表示される
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.show()
https://gyazo.com/fbd36c04a667c8861194ed57e80fa754
グラフの表示範囲を設定する
code: Python
# グラフの一部だけを表示させたい場合は、matplotlib.pyplot.xlim(0,10) import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.show()
https://gyazo.com/6720a19db2b1132fe7bf3f84a492dc7a
グラフの要素に名前を設定する
code: Python
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# グラフのタイトルを設定
plt.title("y=sin(x)(0< y< 1)")
# グラフのx軸とy軸に名前を設定
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.plot(x, y)
plt.show()
https://gyazo.com/2046bf40519194656fde2624e6d4ec1b
グラフにグリッドを表示する
code: Python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# グラフのタイトルを設定
plt.title("y=sin(x)")
# グラフのx軸とy軸に名前を設定
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# グラフにグリッドを表示
plt.grid(True)
plt.plot(x, y)
plt.show()
https://gyazo.com/1a1ddf7fb9030efba0fb3748a954cec9
グラフの軸に目盛りを設定する
code: Python
# x軸に挿入する目盛りは、matplotlib.pyplot.xticks(目盛りを挿入する位置,挿入する目盛り)で設定することができる.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# グラフのタイトルを設定
plt.title("y=sin(x)")
# グラフのx軸とy軸に名前を設定
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# グラフにグリッドを表示
plt.grid(True)
# positionsとlabelsの設定
# グラフのx軸に目盛りを設定
plt.xticks(positions, labels)
plt.plot(x,y)
plt.show()
https://gyazo.com/f0ea71db7cf4147c0f0c7f7889a42ecc
1つのグラフに2種類のデータをプロットする
code: Python
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# グラフのタイトルを設定する
plt.title("graphs of trigonometric functions")
# グラフのx軸とy軸に名前を設定する
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# グラフにグリッドを表示する
plt.grid(True)
# グラフのx軸にラベルを設定する
plt.xticks(positions, labels)
# データx, y1をグラフにプロットし、赤で表示
plt.plot(x, y1, color = "r")
# データx, y2をグラフにプロットし、青で表示
plt.plot(x, y2, color = "b")
plt.show()
https://gyazo.com/23ff8a7c822d46d312cd6100c34e6c53
系列ラベルを設定する
code: Python
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# グラフのタイトルを設定する
plt.title("graphs of trigonometric functions")
# グラフのx軸とy軸に名前を設定する
plt.xlabel("x-axis")
plt.ylabel("y-axis")
# グラフにグリッドを表示する
plt.grid(True)
# グラフのx軸にラベルを設定する
plt.xticks(positions, labels)
# データx, y1をグラフにプロットし、"y=sin(x)"とラベルを付けて赤で表示
plt.plot(x, y1, color="r", label="y=sin(x)")
# データx, y2をグラフにプロットし、"y=cos(x)"とラベルを付けて青で表示
plt.plot(x, y2, color="b", label="y=cos(x)")
# 系列ラベルを設定
plt.show()
https://gyazo.com/18a4379988a340ac92f96af86fd483f4
図の大きさを設定する
code: Python
# matplotlib.pyplot.figure()を活用することで図が表示される領域内のすべてを操作できる
# matplotlib.pyplot.figure(figsize=(横の大きさ, 縦の大きさ))で図の大きさを指定できる
# 大きさを指定するときの単位は、インチ
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# 図の大きさを設定
plt.figure(figsize=(4, 4))
plt.plot(x, y)
plt.show()
https://gyazo.com/c4889d07c9ec359a71c18f1f04bdb7f1
サブプロットを作成する
code: Python
# subplot(行数, 列数, 何番目) 行数:何行のグラフを作成するのか、列数:何列のグラフを作成するのか、何番目:1行目の左から1,2,3....となる
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトを作成
ax = fig.add_subplot(2, 3, 5)
ax.plot(x, y)
# グラフがどこに追加されるか確認するため空白部分をサブプロットで埋める
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/a4be0093970b2af75358a5890acc515b
サブプロットのまわりの余白を調整する
code: Python
# サブプロットの周りの余白を調整することでサブプロット同士の干渉を防ぐことができる
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトaxを作る
ax = fig.add_subplot(2, 3, 5)
# 図内のサブプロット間を、縦横ともに1の割合で空ける
plt.subplots_adjust(wspace=1, hspace=1)
ax.plot(x, y)
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/ada37479fb915e8d505c274b726bf45e
サブプロット内のグラフの表示範囲を設定する
code: Python
# x軸の表示範囲を設定する:ax.set_xlim(範囲), y軸の表示範囲を設定する:ax.set_ylim(範囲)
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトaxを作る
ax = fig.add_subplot(2, 3, 5)
# 図内のサブプロット間を、縦横ともに1の割合で空ける
plt.subplots_adjust(wspace=1, hspace=1)
# サブプロットaxのグラフのy軸の表示範囲を0,1に設定 ax.plot(x,y)
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/a2cbf20e8ce8ba3d46719924f5316f8c
サブプロット内のグラフの要素に名前を設定する
code: Python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトaxを作る
ax = fig.add_subplot(2, 3, 5)
# 図内のサブプロット間を、縦横ともに1.0の割合で空ける
plt.subplots_adjust(wspace=1.0, hspace=1.0)
# サブプロットaxのグラフのタイトルを設定
ax.set_title("y=sin(x)")
# サブプロットaxのグラフのx軸、y軸に名前を設定
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
ax.plot(x,y)
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/9a2918265e4b4436ee42dd077a559f82
サブプロット内のグラフにグリッドを表示する
code: Python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトaxを作る
ax = fig.add_subplot(2, 3, 5)
# 図内のサブプロット間を、縦横ともに1.0の割合で空ける
plt.subplots_adjust(wspace=1.0, hspace=1.0)
# サブプロットaxのグラフにグリッドを設定
ax.grid(True)
# サブプロットaxのグラフのタイトルを設定する
ax.set_title("y=sin(x)")
# サブプロットaxのグラフのx軸、y軸に名前を設定する
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
ax.plot(x,y)
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/98af31dfb8e5381544ea73f1e08805ee
サブプロット内のグラフの軸に目盛りを設定する
code: Python
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(9, 6))
# 2×3のレイアウトの上から2行目、左から2列目にサブプロットオブジェクトaxを作る
ax = fig.add_subplot(2, 3, 5)
# 図内のサブプロット間を、縦横ともに1の割合で空ける
plt.subplots_adjust(wspace=1, hspace=1)
# サブプロットaxのグラフにグリッドを表示する
ax.grid(True)
# サブプロットaxのグラフのタイトルを設定する
ax.set_title("y=sin(x)")
# サブプロットaxのグラフのx軸、y軸に名前を設定する
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
# サブプロットaxのグラフのx軸に目盛りを設定する
ax.set_xticks(positions)
ax.set_xticklabels(labels)
# データx,yをグラフにプロットし、表示する
ax.plot(x,y)
axi = []
for i in range(6):
if i==4:
continue
fig.add_subplot(2, 3, i+1)
plt.show()
https://gyazo.com/d5b875ab8a0c46947bb36a24cdbde2d4
折れ線グラフ マーカーの種類と色を設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
days = np.arange(1, 11)
# 表示の設定
plt.xlabel("days")
plt.ylabel("weight")
# 円マーカーを赤色でプロットし折れ線グラフを作成
plt.plot(days, weight, marker="o", markerfacecolor="r")
plt.show()
https://gyazo.com/6fde98cb6b1bc949bcb5c19e968c188a
折れ線グラフ 線のスタイルと色を設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
days = np.arange(1, 11)
# 表示の設定
plt.xlabel("days")
plt.ylabel("weight")
# 円マーカーを赤色でプロットし、青の破線の折れ線グラフを作成
plt.plot(days, weight, linestyle="--", color="b", marker="o", markerfacecolor="r")
plt.show()
https://gyazo.com/cced54501daf0c52cbc742316bb03a10
棒グラフ 棒グラフを作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 棒グラフを作成
plt.bar(x, y)
plt.show()
https://gyazo.com/27e615df0fa0ebc25137979ac62533fe
棒グラフ 横軸にラベルを設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 棒グラフを作成し、横軸にラベルを設定
plt.bar(x, y, tick_label=labels)
plt.show()
https://gyazo.com/6f42122559dee23b7ad1fb7d2e8c1c17
棒グラフ 積み上げ棒グラフを作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 積み上げ棒グラフを作成し、横軸にラベルを設定
plt.bar(x, y1, tick_label=labels)
plt.bar(x, y2, bottom=y1)
# このように系統ラベルを設定することもできる
plt.legend(("y1", "y2"))
plt.show()
https://gyazo.com/c74101bf3235ddbc517fece537aff899
ヒストグラム ヒストグラムを作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
# random.randn は標準偏差値が0になるような値を出力する (-1 ~ 1くらいが多くなる)
data = np.random.randn(10000)
# dataを用いてヒストグラムを作成
plt.hist(data)
plt.show()
https://gyazo.com/a29965c3f799e702231f449da8ffaae2
ヒストグラム ビン数を設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
data = np.random.randn(10000)
# ビン数100のヒストグラムを作成 (階級を設定できる)
plt.hist(data, bins=100)
plt.show()
https://gyazo.com/82496b8967d178ed600164cc198bb43c
ヒストグラム 正規化を行う
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
data = np.random.randn(10000)
# 正規化されたビン数100のヒストグラムを作成
# densty=Trueとすると合計面積が1になる
plt.hist(data, bins=100, density=True)
plt.show()
https://gyazo.com/a4503b470c8f80196618c5f2e5a968bb
ヒストグラム 累積ヒストグラムを作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
data = np.random.randn(10000)
# 正規化されたビン数100の累積ヒストグラムを作成
plt.hist(data, bins=100, cumulative=True, density=True)
plt.show()
https://gyazo.com/9d84aeb3d80637fb2b7e1889871d74bd
散布図 散布図を作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
# 散布図を作成
plt.scatter(x, y)
plt.show()
https://gyazo.com/d4723c0c1fefdaea23a8f4658a060c70
散布図 マーカーの種類と色を設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
# マーカーの種類を四角、色を赤に設定して散布図を作成
plt.scatter(x, y, marker="s", color="r")
plt.show()
https://gyazo.com/9dc5b47248c9901666fc4dbca06eb2d1
散布図 値に応じてマーカーの大きさを設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
z = np.random.choice(np.arange(100), 100)
# zの値に応じて、マーカーの大きさが変わるようにプロット
plt.scatter(x, y, s=z)
plt.show()
https://gyazo.com/8a2338a2a967867970542b84dfd942d9
散布図 値に応じてマーカーの濃さを設定する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
z = np.random.choice(np.arange(100), 100)
# zの値に応じて、マーカーの濃さが青系統で変わるようにプロット
plt.scatter(x, y, c=z, cmap="Blues")
plt.show()
https://gyazo.com/058af659eea3283fc64b264bc385c40d
散布図 カラーバーを表示する
code: Python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
z = np.random.choice(np.arange(100), 100)
# zの値に応じて、マーカーの濃さが青系統で変わるようにプロット
plt.scatter(x, y, c=z, cmap="Blues")
# カラーバーを表示
plt.colorbar()
plt.show()
https://gyazo.com/2ddccbdb80f89eec82d608b6a44c70b5
円グラフ 円グラフを作成する
code: Python
import matplotlib.pyplot as plt
# dataを円グラフとして可視化する
plt.pie(data)
# 円グラフを楕円から円形にする
plt.axis("equal")
plt.show()
https://gyazo.com/5a94e9708deecf28dd4c5b80a07c919f
円グラフ 円グラフにラベルを設定する
code: Python
import matplotlib.pyplot as plt
# dataにlabelsのラベルをつけ円グラフ可視化する
plt.pie(data, labels=labels)
plt.axis("equal")
plt.show()
https://gyazo.com/7d0789851391e4817a815bb595371182
円グラフ 特定の要素を目立たせる
code: Python
import matplotlib.pyplot as plt
# dataにlabelsのラベルをつけて、Bananaを目立たせた円グラフを可視化する
plt.pie(data, labels=labels, explode=explode)
plt.axis("equal")
plt.show()
https://gyazo.com/5202003b787b2da33991e4eff18a2c07
3Dグラフ 3D Axesを作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 3D描画を行うために必要なライブラリ
from mpl_toolkits.mplot3d import Axes3D
t = np.linspace(-2*np.pi, 2*np.pi)
X, Y = np.meshgrid(t, t)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(6,6))
# サブプロットaxを作成
ax = fig.add_subplot(1,1,1,projection="3d")
# プロットして表示
ax.plot_surface(X, Y, Z)
plt.show()
https://gyazo.com/4b6a8e5ab4cf9a22e507c4ef09dc6be2
3Dグラフ 曲面を作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 3D描画を行うために必要なライブラリ
from mpl_toolkits.mplot3d import Axes3D
x = y = np.linspace(-5, 5)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2)/2) / (2*np.pi)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(6, 6))
# サブプロットaxを作成
ax = fig.add_subplot(1, 1, 1, projection="3d")
# 曲面を描画して表示
ax.plot_surface(X,Y,Z)
plt.show()
https://gyazo.com/2e3795c84350695ff863447e079c5ea5
3Dグラフ 3Dヒストグラムを作成する
code: Python
import matplotlib.pyplot as plt
import numpy as np
# 3D描画を行うために必要なライブラリ
from mpl_toolkits.mplot3d import Axes3D
# Figureオブジェクトを作成
fig = plt.figure(figsize=(5, 5))
# サブプロットax1を作成
ax = fig.add_subplot(111, projection="3d")
# x, y, zの位置を決める
zpos = np.zeros(10)
# x, y, zの増加量を決める
dx = np.ones(10)
dy = np.ones(10)
# 3次元のbarを作成
ax.bar3d(xpos, ypos, zpos, dx, dy, dz)
plt.show()
https://gyazo.com/5e3d4b771451f6c16aeb9bdc48c11ed7
3Dグラフ 3D散布図を作成する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# 3D描画を行うために必要なライブラリ
from mpl_toolkits.mplot3d import Axes3D
np.random.seed(0)
X = np.random.randn(1000)
Y = np.random.randn(1000)
Z = np.random.randn(1000)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(6, 6))
# サブプロットaxを作成
ax = fig.add_subplot(1, 1, 1, projection="3d")
# X,Y,Zを1次元に変換
x = np.ravel(X)
y = np.ravel(Y)
z = np.ravel(Z)
# 3D散布図を作成
ax.scatter3D(x, y, z)
plt.show()
https://gyazo.com/ec03dd448dfa6af03aadbebe293f4446
3Dグラフ 3Dグラフにカラーマップを適用する
code: Python
import numpy as np
import matplotlib.pyplot as plt
# カラーマップを表示するためのライブラリ
from matplotlib import cm
# 3D描画を行うために必要なライブラリ
from mpl_toolkits.mplot3d import Axes3D
t = np.linspace(-2*np.pi, 2*np.pi)
X, Y = np.meshgrid(t, t)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# Figureオブジェクトを作成
fig = plt.figure(figsize=(6, 6))
# サブプロットaxを作成
ax = fig.add_subplot(1,1,1, projection="3d")
# 以下を一部変更して、zの値についてカラーマップを適用
ax.plot_surface(X, Y, Z, cmap=cm.coolwarm)
plt.show()
https://gyazo.com/e2a37793d0f845b56d2550b487aadbbb