ゼファーネットのロゴ

Matplotlib を使用したデータ視覚化の概要

日付:

Matplotlib を使用したデータ視覚化の概要
著者による画像

多くの組織が、ビジネス上の意思決定を行うために膨大な量のデータを収集しています。 Data Visualization この情報をさまざまなチャートやグラフの形で提示するプロセスです。 複雑なデータを簡素化して、パターンの特定、傾向の分析、実用的な洞察の発見を容易にします。 matplotlib Python のマルチプラットフォーム データ視覚化ライブラリです。 当初は MATLAB のプロット機能をエミュレートするために作成されましたが、堅牢で使いやすいです。 Matplotlib の長所のいくつかは次のとおりです。

  • カスタマイズが容易
  • 簡単に始められる
  • 高品質な出力
  • すぐにアクセス可能
  • Figure のさまざまな要素を適切に制御できます

Matplotlib のインストール

Matplotlib をインストールするには、Windows、Mac OS、および Linux のターミナルで次のコマンドを実行します。

pip install matplotlib

 

Jupyter ノートブックの場合:

!pip install matplotlib

 

アナコンダ環境の場合:

conda install matplotlib

ライブラリのインポート

import numpy as np
import pandas as pd  #If you are reading data from CSV
import matplotlib.pyplot as plt

プロットの作成

matplotlib でプロットを作成するには、次の XNUMX つの方法があります。

1) 機能的アプローチ

使い方は簡単ですが、高度な制御はできません。 それは利用します py.plot(x,y) 関数。 チュートリアルの他の場所ではこれを使用しませんが、どのように機能するかを知っている必要があるため、その例の XNUMX つを見てみましょう。

x = np.arange(0,8) 
y = x   plt.plot(x, y) 
plt.xlabel('Hours of Study')
plt.ylabel('Class Performance')
plt.title('Student Performance Analysis')
plt.show() # For non-jupyter users

 

Matplotlib を使用したデータ視覚化の概要

2) OOPアプローチ

OOP アプローチは、プロットを作成するための推奨される方法です。 Figure オブジェクトの作成を利用し、次に軸を追加します。 軸を追加しない限り、Figure オブジェクトは表示されません。

fig = plt.figure()

 

Matplotlib を使用したデータ視覚化の概要
 

軸を描く前に、その構文を理解しましょう。 

figureobject.add_axes([a,b,c,d])

 

ここで a,b は原点の位置を表します。 (0,0) は左下隅を意味し、c,d はプロットの幅と高さを設定します。 両方の値の範囲は 0 ~ 1 です。

fig = plt.figure() # blank canvas
axes = fig.add_axes([0, 0, 0.5, 0.5]) axes.plot(x, y)
plt.show()

 

Matplotlib を使用したデータ視覚化の概要
 

Figure オブジェクトは、dpi や Figure サイズなどのいくつかの追加パラメーターを受け取ることができます。 Dpi は XNUMX インチあたりのドット数を指し、図がぼやけている場合は図の解像度を上げます。 Figure のサイズは、Figure のサイズをインチ単位で制御します。 

fig = plt.figure(figsize=(0.5,0.5),dpi=200) # blank canvas
axes = fig.add_axes([0, 0, 0.5, 0.5]) 
axes.plot(x, y)
plt.show()

 

Matplotlib を使用したデータ視覚化の概要
 

次のように、複数の軸を Figure オブジェクトに追加することもできます。

a = np.arange(0,50)
b = a**3
fig = plt.figure()
outer_axes = fig.add_axes([0,0,1,1])
inner_axes = fig.add_axes([0.25,0.5,0.25,0.25])
outer_axes.plot(a,b)
inner_axes.set_xlim(10,20) #sets the range on x-axis
inner_axes.set_ylim(0,10000) #sets the range on y-axis
inner_axes.set_title("Zoomed Version")
inner_axes.plot(a,b)
plt.show()

 

Matplotlib を使用したデータ視覚化の概要
 

Figure オブジェクトのさまざまな軸を手動で管理する代わりに、subplots() 関数を使用して複数のプロットを作成できます。 その構文を調べてみましょう。

fig, axes = plt.subplots(nrows=1, ncols=2)

 

これは、すべての軸オブジェクトを保持する numpy 配列と共に Figure オブジェクトを含むタプルを返します。 実際の軸セットに必要な行と列の数を指定する必要があります。 各軸オブジェクトは個別に返され、個別にアクセスできます。

exercise_hrs = np.arange(0, 5)
male_cal = exercise_hrs
female_cal = 0.70 * exercise_hrs
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(exercise_hrs, male_cal)
axes[0].set_ylim(0, 5) # Sets range of y
axes[0].set_title("Male")
axes[1].plot(exercise_hrs, female_cal)
axes[1].set_ylim(0, 5)
axes[1].set_title("Female")
fig.suptitle( "Calories Burnt vs Workout Hours Analysis", fontsize=16
) # Displays the main title
fig.tight_layout() # Prevents overlapping of subplots

 

Matplotlib を使用したデータ視覚化の概要
 

サブプロットの間隔は、次の方法を使用して手動で調整できます。

fig.subplots_adjust(left=None,top=None,right=None,top=None,wspace=None, hspace=None)

 

  • left = Figure のサブプロットの左側
  • right = Figure のサブプロットの右側
  • bottom = Figure のサブプロットの下部
  • top = Figure のサブプロットの上部
  • wspace = サブプロット間のスペース用に予約された幅の量
  • hspace = サブプロット間のスペース用に予約された高さの量
fig.subplots_adjust(left=0.2,top=0.8,wspace=0.9, hspace=0.1)

 

これを上記のプロットに適用します。

 

Matplotlib を使用したデータ視覚化の概要

プロットのカスタマイズ

1) 凡例

Figure オブジェクトに複数のプロットを作成している場合、どのプロットが何を表しているのかを識別するのが混乱することがあります。 したがって、追加します ラベル=「テキスト」 の属性 軸.プロット() 関数を呼び出してから、後で 軸.凡例()  キーを表示する機能。

axes.legend(loc=0) or axes.legend() #Default - Matplotlib decides position
axes.legend(loc=1) # upper right
axes.legend(loc=2) # upper left
axes.legend(loc=3) # lower left
axes.legend(loc=4) # lower right axes.legend(loc=(x,y)) # At (x,y) position

 

axes.legend() には、配置する場所を決定する引数 loc もあります。

x = np.arange(0,11)
fig = plt.figure()
ax = fig.add_axes([0,0,0.75,0.75])
ax.plot(x, x**2, label="X^2")
ax.plot(x, x**3, label="X^3")
ax.legend(loc=0) #Let matplotlib decide

 

Matplotlib を使用したデータ視覚化の概要

2) ラインスタイリング

Matplotlib には多くのカスタマイズ オプションがあります。 構文を分析して、線の色、幅、およびスタイルを変更してみましょう。

axes.plot(x, y, color or c = 'red',alpha= ‘0.5’, linestyle or ls = ':', linewidth or lw= 5)

 

色: 名前または RGB 値を使用して色を定義するか、r が赤などを意味する Matlab 型の構文を使用できます。アルファ属性を使用して透明度を設定することもできます。

線種: カスタム スタイルも作成できますが、主に視覚化に関心があるため、シンプルなスタイルが適しています。 それらは次のとおりです。

linestyle = “-” or linestyle = “solid”
linestyle = “:” or linestyle = “dotted”
linestyle = “--” or linestyle = “dashed”
linestyle = “-.” or linestyle = “dashdot”

 

線幅: デフォルト値は 1 ですが、必要に応じて変更できます。

fig, ax = plt.subplots()
ax.plot(x, x-2, color="#000000", linewidth=1 , linestyle='solid')
ax.plot(x, x-4, color="red", lw=2 ,ls=":")
ax.plot(x, x-6, color="blue",alpha=0.4,lw=4 , ls="-.")

 

Matplotlib を使用したデータ視覚化の概要

3) マーカーのスタイリング

matplotlib では、プロットされたすべての点はマーカーと呼ばれます。 デフォルトでは、最後の行のみが表示されますが、マーカーの種類とそのサイズを独自の選択に従って設定できます。

axes.plot(x, y,marker =”+” , markersize or ms= 20)

 

マーカーには、言及されている多くの種類があります こちら ただし、主要なものだけを説明します。

marker='+' # plus
marker='o' # circle
marker='s' # square
marker='.' # point

 

例:

fig, ax = plt.subplots()
ax.plot(x, x+2,marker='+',markersize=20)
ax.plot(x, x+4,marker='o',ms=10) ax.plot(x, x+6,marker='s',ms=15,lw=0) ax.plot(x, x+8,marker='.',ms=10) 

 

Matplotlib を使用したデータ視覚化の概要

すべてのタイプのデータが同じ形式の表現を必要としないため、Matplotlib はさまざまな特別なプロットを提供します。 プロットの選択は、分析中の問題によって異なります。 たとえば、部分対全体の関係に関心がある場合は円グラフ、値またはグループを比較するための棒グラフ、異なる変数間の対応を観察するための散布図などを使用できます。このチュートリアルでは、例について説明します。最も頻繁に使用される 5 つのプロットのみについて説明します。 始めましょう:

1) 折れ線グラフ

これは、データを表す最も単純な形式です。 それらは主に時間に関するデータを分析するために使用されるため、時系列プロットとしても知られています。 上昇傾向は、変数間の正の相関を表し、逆もまた同様です。 天気予報や株式市場の予測から、日々の顧客や売上の監視など、幅広い用途があります。

# Data is collected from worldometer
years = ["1980", "1990", "2000", "2010", "2020"]
Asia = [2649578300, 3226098962, 3741263381, 4209593693, 4641054775]
Europe = [693566517, 720858450, 725558036, 736412989, 747636026]
fig, ax = plt.subplots()
ax.set_title("Population Analysis (1980 - 2020)")
ax.set_xlabel("Years")
ax.set_ylabel("Population in billions")
ax.plot(years, Asia, label="Asia")
ax.plot(years, Europe, label="Europe")
ax.legend()

 

Matplotlib を使用したデータ視覚化の概要
 

1980 年以降、アジアの人口が指数関数的に増加していることがわかります。

2) 円グラフ

円グラフは、円を部分と全体の関係を表す比例セグメントに分割します。 各部分は合計で 100% になります。 スライスの領域はウェッジとも呼ばれます。 

matplotlib.pyplot.pie(data,explode=None,labels=None,colors=None,autopct=None, shadow=False)

 

  • data = プロットする値の配列
  • 爆発=プロットのウェッジを分離します
  • labels = 異なるスライスを表す文字列
  • colors = くさびを上記の色で塗りつぶします
  • autopct = ウェッジのラベル数値
  • shadow = くさびに影を追加します 
labels = [ "Rent", "Utility bills", "Transport", "University fees", "Grocery", "Savings",
]
expenses = [200, 100, 80, 500, 100, 60]
explode = [0.0, 0.0, 0.0, 0.0, 0.0, 0.4]
colors = [ "lightblue", "orange", "lightgreen", "purple", "crimson", "red",
]
fig, ax = plt.subplots()
ax.set_title("University Student Expenses")
ax.pie( expenses, labels=labels, explode=explode, colors=colors, autopct="%.1f%%", shadow=True,
)
plt.show()

 

Matplotlib を使用したデータ視覚化の概要

3) 散布図

XY プロットとも呼ばれる散布図は、従属変数と独立変数の間の関係を観察するために使用されます。 傾向分析のために個々のデータ ポイントをプロットします。 外れ値の検出と相関関係は、散布図を使用して簡単に検出できます。

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None,alpha=None, linewidths=None, edgecolors=None)

 

  • (x,y) = データ位置
  • s= マーカーのサイズ
  • c= マーカーの色のシーケンス
  • マーカー=マーカースタイル
  • alpha= 透明度
  • linewidth= マーカー エッジの線幅
  • edgecolors= マーカー エッジの色
x = np.linspace(0, 11, 40)
y = np.cos(x)
fig, ax = plt.subplots()
ax.scatter( x, y, s=50, c="green", marker="o", alpha=0.4, linewidth=2, edgecolor="black",
)

 

Matplotlib を使用したデータ視覚化の概要

4) 棒グラフ 

棒グラフは、垂直または水平に配置された長方形の棒でカテゴリ データを視覚化するために使用されます。 縦棒グラフであるか横棒グラフであるかに応じて、バーの長さまたは高さはその数値を表します。 棒グラフは、特定のグループを比較する場合に非常に役立ちます。

matplotlib.pyplot.bar(x, height, width, bottom, align)

 

  • x= カテゴリ変数
  • 高さ=対応する数値
  • width= 棒グラフの幅 (デフォルト値は 0.8)
  • bottom= バーのベースの開始点 (デフォルト値は 0)
  • align= カテゴリ名の配置 (デフォルト値は中央)

注: color、edgecolor、linewidth もカスタマイズできます。

fig,ax = plt.subplots()
courses = ['Maths', 'Science', 'History', 'Computer', 'English']
students = [24,12,15,31,22]
ax.bar(courses,students,width=0.5,color="red",alpha=0.6,edgecolor="red",linewidth=2)

 

Matplotlib を使用したデータ視覚化の概要

また、bottom 属性を調整して、カテゴリを積み重ねることもできます。

# For Horizontal Bar Chart
ax.barh( courses, students, height=0.7, color="red", alpha=0.6, edgecolor="red", linewidth=2,
)

 

Matplotlib を使用したデータ視覚化の概要
 

また、bottom 属性を調整して、カテゴリを積み重ねることもできます。

fig,ax = plt.subplots()
courses = ['Maths', 'Science', 'History', 'Computer', 'English']
students = [[24,12,15,31,22],[19,14,19,26,18]] #Male array then female array
ax.bar(courses,students[0],width=0.5,label="male")
ax.bar(courses,students[1],width=0.5,bottom=students[0],label="female")
ax.set_ylabel("No of Students")
ax.legend()

 

Matplotlib を使用したデータ視覚化の概要
 

バーの太さと位置をいじって、複数のバーをプロットすることもできます。

fig,ax = plt.subplots()
courses = ['Maths', 'Science', 'History', 'Computer', 'English']
males = (24,12,15,31,22)
females = (19,14,19,26,18)
index=np.arange(5)
bar_width=0.4
ax.bar(index,males,bar_width,alpha=.9,label="Male")
# We will adjust the bar_width so it is placed side to side ax.bar(index + bar_width ,females,bar_width,alpha=.9,label="Female") ax.set_xticks(index + 0.2,courses) # Show labels
ax.legend()

 

Matplotlib を使用したデータ視覚化の概要

5) ヒストグラム

多くの人は棒グラフと似ているため、棒グラフと混同することがよくありますが、それが表す情報は異なります。 データ ポイントのグループを X 軸にプロットされたビンと呼ばれる範囲に整理し、Y 軸には頻度に関する情報を含めます。 棒グラフとは異なり、数値データのみを表すために使用されます。

matplotlib.pyplot.hist(x,bins=None,cumulative=False,range=None,bottom=None,histtype=’bar’,rwidth=None, color=None, label=None, stacked=False)

 

  • bins = int の場合は等幅のビン、それ以外の場合はシーケンスに依存  
  • 累積=最後のビンは合計データポイントを提供します(累積頻度に基づく)
  • ボトム = ビンの位置
  • range = データを切り出す 
  • histt​​ype= bar,barstacked, step,stepfilled (デフォルト= bar)
  • rwidth= ビンの相対的な幅
  • stacked= True の場合、複数のデータが互いに積み上げられます
  • data = np.random.normal(140, 10,100) # 100人の身長を生成
  • ビン = 10
data = np.random.normal(140, 10,100) # Generating height of 100 people
bins = 10
fig,ax = plt.subplots()
ax.set_xlabel("Height in cm")
ax.set_ylabel("No of people")
ax.hist(data,bins=bins, color="green",alpha=0.5,edgecolor="green")

 

Matplotlib を使用したデータ視覚化の概要
 

male = np.random.normal(140, 10,100) # Generating height of 100 males
female = np.random.normal(125,10,100) # Generating height of 100 females
bins = 10
fig,ax = plt.subplots()
ax.set_xlabel("Height in cm")
ax.set_ylabel("No of people")
ax.hist([male,female],bins=bins,label=["Male","Female"])
ax.legend()

 

Matplotlib を使用したデータ視覚化の概要

この記事をお読みいただき、Matplotlib を使用してさまざまな視覚化を実行できるようになったことを願っています。 コメント欄でご意見やご感想をお聞かせください。 ここにリンクがあります Matplotlib ドキュメント、さらに深く掘り下げることに興味がある場合。

 
 
カンワル・メーリーン は、データ サイエンスと医療における AI の応用に強い関心を持つ意欲的なソフトウェア開発者です。 Kanwal は、APAC 地域の Google Generation Scholar 2022 に選ばれました。 Kanwal は、流行のトピックに関する記事を書いて技術知識を共有することを好み、技術業界における女性の割合を改善することに情熱を注いでいます。
 

スポット画像

最新のインテリジェンス

スポット画像