第3章: Pythonでのデータのプロット手法

データを効果的に可視化することで、単純な数値データや表形式の情報が一目で理解できる形に変わります。この章では、Pythonを使って代表的なプロット手法を実装し、ラベルやタイトル、凡例などのグラフの装飾方法、さらには複合グラフの作成について詳しく解説します。Pythonでの可視化ライブラリとして最も一般的に使用されるMatplotlibSeabornを中心に進めていきます。

3.1 散布図 (Scatter Plot)

散布図とは

散布図は、2つの変数間の関係を視覚化するために用いられるプロット手法です。例えば、ある製品の販売価格と販売個数の関係性など、連続する数値データ間の相関関係を示す際に非常に有効です。

実装方法

Pythonで散布図を作成するには、matplotlib.pyplot.scatter()関数を使用します。また、seaborn.scatterplot()を使用するとより簡単に作成できます。

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# サンプルデータを生成
np.random.seed(0)
x = np.random.rand(50)
y = np.random.rand(50)

# Matplotlibによる散布図
plt.scatter(x, y)
plt.title("Scatter Plot using Matplotlib")
plt.xlabel("X values")
plt.ylabel("Y values")
plt.show()

# Seabornによる散布図
sns.scatterplot(x=x, y=y)
plt.title("Scatter Plot using Seaborn")
plt.show()

装飾

散布図に装飾を追加することで、情報をより明確に伝えることができます。例えば、データポイントに色やサイズを持たせることで、他の情報(カテゴリや重み)を同時に視覚化することが可能です。

# カテゴリを示すラベル付きの散布図
categories = np.random.choice(['A', 'B'], size=50)
sns.scatterplot(x=x, y=y, hue=categories, style=categories)
plt.title("Categorized Scatter Plot")
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.legend(title="Category")
plt.show()

この例では、huestyle引数を使用することで、カテゴリごとに色やマーカーのスタイルを変更しています。

3.2 棒グラフ (Bar Plot)

棒グラフとは

棒グラフは、カテゴリごとの値を視覚化するのに最も適した手法です。例えば、各国のGDPや商品の販売数など、カテゴリに対応するデータを比較する際に使われます。

実装方法

棒グラフはmatplotlib.pyplot.bar()seaborn.barplot()を使用して簡単に描画できます。

# サンプルデータ
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
values = [5, 9, 2, 4]

# Matplotlibでの棒グラフ
plt.bar(categories, values)
plt.title("Bar Plot using Matplotlib")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()

# Seabornでの棒グラフ
sns.barplot(x=categories, y=values)
plt.title("Bar Plot using Seaborn")
plt.show()

装飾

棒グラフもまた、装飾を加えることで視覚的に情報をわかりやすくできます。例えば、グラフの色を変更したり、データラベルを追加することで、値を直接グラフ上に表示することが可能です。

# 色付き棒グラフとデータラベルの追加
plt.bar(categories, values, color=['blue', 'green', 'red', 'purple'])
plt.title("Colored Bar Plot with Labels")
plt.xlabel("Categories")
plt.ylabel("Values")

# データラベルの追加
for i, value in enumerate(values):
plt.text(i, value + 0.1, str(value), ha='center')

plt.show()

このコードでは、各バーの上に値を表示し、色を変更することで視覚的なインパクトを強調しています。

3.3 ヒストグラム (Histogram)

ヒストグラムとは

ヒストグラムは、データの分布を視覚化するために使用されます。データがどの範囲に集中しているか、またはどのように分散しているかを一目で確認することができるため、統計分析において重要な役割を果たします。

実装方法

ヒストグラムは、matplotlib.pyplot.hist()で簡単に作成できます。

# サンプルデータ
data = np.random.randn(1000)

# ヒストグラムの作成
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

装飾

ヒストグラムに装飾を加えることで、特定の範囲に注目させたり、複数のヒストグラムを比較することができます。

# 2つの異なるデータセットのヒストグラムを重ねて表示
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2 # データセット2はシフト

plt.hist(data1, bins=30, alpha=0.5, label='Data 1', color='blue')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2', color='green')
plt.title("Overlapping Histograms")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.legend()
plt.show()

このコードでは、2つの異なるデータセットを同じヒストグラム上に重ねて表示し、分布の違いを比較しています。

3.4 折れ線グラフ (Line Plot)

折れ線グラフとは

折れ線グラフは、連続データの変化を視覚化するために使用されます。時間の経過に伴うデータの推移など、連続するデータセットを視覚化するのに最適です。

実装方法

折れ線グラフは、matplotlib.pyplot.plot()で簡単に作成できます。

# サンプルデータ
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 折れ線グラフの作成
plt.plot(x, y, label="Sine Wave")
plt.title("Line Plot")
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.legend()
plt.show()

装飾

折れ線グラフにもさまざまな装飾を追加することで、特定の部分を強調したり、複数の線を比較したりすることができます。

# 複数の折れ線を異なるスタイルで描画
y2 = np.cos(x)

plt.plot(x, y, label="Sine Wave", color='blue', linestyle='--')
plt.plot(x, y2, label="Cosine Wave", color='red', linestyle='-')
plt.title("Multiple Line Plot")
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.legend()
plt.grid(True) # グリッドを追加
plt.show()

この例では、異なるスタイルの2つの折れ線グラフを同じ図に描画しています。また、グリッドを追加することで、データポイントを確認しやすくしています。

3.5 複数のプロットを組み合わせた複合グラフ

複合グラフとは

複合グラフは、異なるプロットを一つの図に統合して表示する手法です。例えば、折れ線グラフと棒グラフを同時に表示することで、時系列データの変化とカテゴリデータの比較を一度に確認することができます。

実装方法

matplotlibsubplots機能を使うことで、複数のプロットを一つの図にまとめることができます。

# サンプルデータ
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.random.rand(10)

fig, ax1 = plt.subplots()

# 折れ線グラフを作成
ax1.plot(x, y1, color='blue', label='Sine Wave')
ax1.set_xlabel("X axis")
ax1.set_ylabel("Sine Wave", color='blue')

# 別のy軸を持つ棒グラフを追加
ax2 = ax1.twinx()
ax2.bar(np.arange(10), y2, color='green', alpha=0.5, label='Random Data')
ax2.set_ylabel("Random Data", color='green')

plt.title("Combined Line and Bar Plot")
plt.show()

この例では、折れ線グラフと棒グラフを同じ図に描画し、それぞれに異なるY軸を設定することで、複数の異なるデータを同時に視覚化しています。


Pythonを使った代表的なデータ可視化手法の詳細な解説です。この章を通して、散布図、棒グラフ、ヒストグラム、折れ線グラフ、そして複合グラフの作成と装飾方法を理解し、実際に使いこなせるようになることを目指しています。可視化のスキルはデータ解析やレポート作成で重要な役割を果たすため、ぜひこれらの手法を実践してみてください。


初心者におすすめ!プログラミングスクールのススメ

未経験でも気軽に!サブスク型プログラミングスクール【Freeks】

プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。

独学の挫折率、驚きの87.5%!

独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。

有料と無料、スクールの違いは?

プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:

  • 受講条件が異なる
  • 学べるスキルやカリキュラム内容が異なる
  • 就職や転職のサポート内容が異なる

どちらが自分に合っているか、よく考えて選ぶのが大事です。

サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!

プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:

  • 未経験者向けのわかりやすいカリキュラム
  • 経験豊富なエンジニアのサポート
  • オンラインで自分のペースで学習可能

なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。

終了後は副業もサポート!

カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。

独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
 ↓ ↓ こちらをクリック ↓ ↓ 

p-school

Share
Published by
p-school

Recent Posts

第6章: PHPのデータベース操作

PHPを使用してデータベースに…

2週間 ago

第5章: PHPのオブジェクト指向プログラミング(OOP)

オブジェクト指向プログラミング…

2週間 ago

第4章: PHPの関数

プログラミングにおいて、関数は…

2週間 ago

第3章: PHPの配列とコレクション

PHPでの配列とコレクションの…

2週間 ago

第2章: PHPの基本文法

PHPの基本的な構文や使い方を…

2週間 ago