python x データ分析 | グラフ描画について情報整理(Matplotlib)~その2~

python x データ分析 | グラフ描画について情報整理(Matplotlib)~その2~

みなさん、こんにちは!

今回はMatplotlibのグラフ種類を取り上げます。

グラフの種類について

Matplotlibは、さまざまな種類のグラフを作成するための機能を提供しています。

以下に、Matplotlibで作成可能な主なグラフの種類をいくつか示します。

  1. 折れ線グラフ(Line plot): plot()
  2. 散布図(Scatter plot): scatter()
  3. 棒グラフ(Bar plot): bar(), barh()
  4. ヒストグラム(Histogram): hist()
  5. 円グラフ(Pie chart): pie()
  6. 箱ひげ図(Box plot): boxplot()
  7. ヒートマップ(Heatmap): imshow(), pcolor(), pcolormesh()
  8. 3Dプロット(3D plot): plot_surface(), scatter3D(), plot_wireframe()
  9. コンタープロット(Contour plot): contour(), contourf()
  10. レーダーチャート(Radar chart): polar()

上記は一部の例であり、Matplotlibはさまざまなグラフを作成するための機能を提供しています。

これらの関数を使用してデータを適切にプロットし、必要なカスタマイズを行うことで、目的に応じたグラフを作成することができます。

折れ線グラフ(Line plot)

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

plt.title('Line Plot')
plt.xlabel('X軸')
plt.ylabel('Y軸')

plt.show()

散布図(Scatter plot)

import matplotlib.pyplot as plt
import random

x = [random.uniform(1, 5) for _ in range(100)]  # 1から5の範囲で乱数を生成
y = [random.gauss(0, 1) + xi * 2 for xi in x]  # 平均0、標準偏差1の正規分布に従った値にxの2倍を加える

plt.scatter(x, y)

plt.title('Scatter Plot')
plt.xlabel('X')
plt.ylabel('Y')

plt.show()

棒グラフ(Bar plot)

import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
values = [10, 23, 17, 12]

plt.bar(categories, values)

plt.title('Bar Plot')
plt.xlabel('category')
plt.ylabel('value')

plt.show()

ヒストグラム(Histogram)

import matplotlib.pyplot as plt
import random

data = [random.gauss(0, 1) for _ in range(1000)]  # 平均0、標準偏差1の正規分布に従う乱数を生成

plt.hist(data, bins=30)  # データとビンの数を指定
plt.title('Histogram')

plt.show()

円グラフ(Pie chart)

import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['red', 'green', 'blue', 'orange']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%')
plt.title('Pie Chart')

plt.show()

※ autopct='%1.1f%%'は、各要素の割合をパーセント表示するための書式指定です。

箱ひげ図(Box plot)

import matplotlib.pyplot as plt
import random

data1 = [random.normalvariate(0, 1) for _ in range(1000)]
data2 = [random.normalvariate(0, 1) for _ in range(1000)]
data3 = [random.normalvariate(0, 1) for _ in range(1000)]

plt.boxplot([data1,data2,data3])

plt.title('Box Plot')
plt.xlabel('Data')
plt.ylabel('Value')

plt.show()

ヒートマップ(Heatmap)

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(50, 50)

plt.imshow(data, cmap='hot') # ヒートマップの描画
plt.colorbar() # カラーバーの表示

plt.title('Heatmap')
plt.xlabel('X')
plt.ylabel('Y')

plt.show()

3Dプロット(3D plot)

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# データの生成
theta = np.linspace(0, 2 * np.pi, 100)  # 角度
z = np.linspace(-2, 2, 100)  # 高さ
r = z**2 + 1  # 半径

x = r * np.cos(theta)  # x座標
y = r * np.sin(theta)  # y座標

# 3Dプロットの描画
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z)

# グラフのタイトルと軸ラベル
ax.set_title('3D Plot')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# グラフの表示
plt.show()

このコードでは、numpyモジュールを使用してデータを生成しています。

thetaは0から2πまでの角度、zは-2から2までの高さ、rは半径です。

xyは極座標からの変換を行い、3Dプロットを行うための座標データを作成しています。

mpl_toolkits.mplot3dモジュールのAxes3Dを使用して3Dプロットを作成し、plot()関数でデータをプロットしています。

コンタープロット(Contour plot)

import numpy as np
import matplotlib.pyplot as plt

# データの生成
x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2  # 高さの計算

# コンタープロットの描画
plt.contour(X, Y, Z, levels=10)

# カラーバーの表示
plt.colorbar()

# グラフのタイトルと軸ラベル
plt.title('Contour Plot')
plt.xlabel('X')
plt.ylabel('Y')

# グラフの表示
plt.show()

レーダーチャート(Radar chart)

import numpy as np
import matplotlib.pyplot as plt

# データの準備
categories = ['A', 'B', 'C', 'D', 'E']  # カテゴリのリスト
values = [4, 3, 5, 2, 4]  # 各カテゴリの値

N = len(categories)
angles = np.linspace(0, 2 * np.pi, N, endpoint=False).tolist()
values += values[:1]
angles += angles[:1]

# レーダーチャートの描画
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw={'polar': True})
ax.plot(angles, values, linewidth=1, linestyle='solid')
ax.fill(angles, values, alpha=0.25)

# カテゴリラベルの設定
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)

# グラフのタイトル
plt.title('Radar Chart')

# グラフの表示
plt.show()

今回は以上です!

本日のAmazonおすすめ_Top10

2024-02-27 10:18:45時点