Python での Matplotlib の紹介

公開: 2022-10-04

Matplotlib は、機械学習の専門家が静的でインタラクティブな視覚化を作成するために主に使用する Python プロット ライブラリです。

Matplotlib とは

Mathplotlib は、2003 年に John D. Hunter によって作成され、2021 年 5 月 8 日にリリースされ、現在のバージョンは 3.4.2 です。

このライブラリは主に Python で記述されていますが、残りは C の目的と JavaScript で記述されているため、プラットフォームと互換性があります。

Matplotlib は、Python の数値拡張である NumPy を使用します。 NumPy による拡張により、オープンソースの代替手段としての実行可能性が追加され、MATLAB よりも優れた選択肢になります。

Python GUI アプリケーションの場合、Matplotlib に付属のオブジェクト指向 API を使用して静的プロットをプロットできます。

ユーザーは、数行の Python コードを記述するだけで、散布図、ヒストグラム、棒グラフ、円グラフ、折れ線グラフ、箱ひげ図など、さまざまなプロットを使用してデータを視覚化できます。

Matplotlib を使用して、Python シェル、Jupyter ノートブック、
Jupyter ラボ、および Pycharm または Anaconda の使用、およびさまざまなプラットフォームにわたる Flask や Django などの Web アプリケーション サーバー。

MATLAB と同様に、フォント、線、色、およびスタイルに関してプロットを広範囲に制御できます。

Python での Matplotib ライブラリの簡単な紹介の後、システムでそれをセットアップする方法を見てみましょう。

Matplotlib 環境のセットアップ

他の Python パッケージおよびライブラリと同様に、pip パッケージ マネージャーを使用して、コンパイル済みの Matplotlib ライブラリとそのパッケージをすべてのオペレーティング システムにインストールできます。

もちろん、最初に Python と pip パッケージをシステムにインストールする必要があります。

次のコマンドは、Python と pip のバージョンを表示して、これらのツールが既にインストールされているかどうかを確認します。

Python がインストールされているかどうかを確認する

Python --version

pipがインストールされているか確認

pip -V

Mathplotlib をインストールする

以下のコマンドは、Python Package Index (PyPI) から Matplotlib パッケージをインストールします。

 python -m pip install matplotlib

このコマンドは、Matplotlib の関連パッケージをダウンロードしてインストールします。 インストールが完了すると、インストール成功のメッセージが表示されます。

Matplotlib が正常にインストールされたことを確認するには、次のコマンドを入力します。コマンド プロンプトに Matplotlib のバージョンが表示されます。

 import matplotlib matplotlib.__version__

コンパイルされていない Matplotlib パッケージをインストールする開発者は、依存関係、セットアップ スクリプト、構成ファイル、およびパッチに加えて、システム内の適切なコンパイラにアクセスできる必要があります。

ただし、この特定のコンパイルされていない Matplolib のインストールは、特に Matplotlib の初心者ユーザーにとっては複雑な場合があります。 したがって、1 行のコマンドを使用して数秒でライブラリをインストールしてみませんか?

Matplotlib のインストール後、パッケージを環境にインポートして、そのユーティリティにアクセスします。

Matplotlib プロット オプション

Matplotlib には、データを視覚化するための多数のプロット オプションが用意されています。 また、ユーザーがプロットを操作するために使用できるさまざまなテーマ、色、およびパレット オプションを提供することで、プロットをカスタマイズすることもできます。

これらのプロット オプションは次のとおりです。

#1。 棒グラフ

棒グラフとして知られる棒グラフは、同じカテゴリ内の値の定量的な比較を視覚化するのに適したオプションです。

棒グラフ-1

Matplotlib は、長さと高さが比例値を表す長方形のバーを使用してこのプロットを表します。 バーは、水平または垂直のいずれかになります。

Matplotlib はplt.bar()関数を使用してバー プロットを作成します。

さらに、このプロットを操作する関数をさらに使用できます。 たとえば、 plt.xlabel()およびplt.ylabel()関数は,それぞれグラフの x 軸と y 軸にラベルを付けます。

plt.title()関数を使用すると、プロットにタイトルを付けることができ、 plt.savefig()関数を使用するとプロットを保存できます。 最も重要なplot.show()関数は、プロットを表示します。

#2。 円グラフ

円グラフと呼ばれる円形の統計プロットを使用して、同じカテゴリ内の項目の比例分布を視覚化できます。

円グラフは、データをパーセント形式で表示します。 グラフの領域全体はデータ全体のパーセンテージに対応し、個々の円のスライスはデータのパーセンテージのセクションを表します。

円グラフ

Matplotlib は、円グラフのパラメーターを描画および調整するplt.pie()関数を使用します。
円グラフの値を小数点以下 1 桁まで出力するautopctなどのその他のパラメーターは、円グラフのプロットに役立ちます。

ビジネス組織は、オペレーション、販売、またはリソースなどの関連情報を提示するのに円グラフが役立つと考えています。

#3。 ヒストグラム

ヒストグラムには、数値データの分布が表示されます。 連続した間隔を使用して、データを個別のセクションに分割します。

ヒストグラムと棒グラフの主な違いは、扱うデータの種類です。 ヒストグラムは連続データ型を処理しますが、棒グラフは代わりにカテゴリ データを処理します。

ヒストグラム

Matplotlib は、ランダムな値または定義された値の配列を使用してヒストグラムを作成するhist()関数を使用します。

#4。 折れ線グラフ

これらのプロットは、X と Y に基づいて、数値とカテゴリとして定義した 2 つのデータ値の間の関係を示すのに役立ちます。

折れ線グラフ

折れ線グラフは、一定期間にわたるデータ値の変化を追跡する上で重要です。

#5。 散布図

散布図は、データ内の変数間の相関関係を含む関係を示します。 また、異常値の特定にも役立ちます。

散布図

散布図では、ドットを使用して、データ変数の関係と、ある変数の変化が別の変数に与える影響を表します。

Matplotlib でプロットを作成する方法

Matplotlib は、さまざまな関数を使用してさまざまなプロットを作成します。 また、プロットを作成するために使用するコードはごくわずかです。

以下に、Matplotlib のさまざまな関数を使用してさまざまなプロット オプションを作成する方法を示します。

#1。 Matplotlib の棒グラフ

棒グラフは、上で説明したように、棒と軸を使用してデータ カテゴリを表示します。棒と軸は、一方の軸でカテゴリの比較を表し、もう一方の軸でカテゴリの対応する値を表します。

以下に示すように、Matplotlib のbar()関数は、さまざまな引数レイアウトを使用してバーのレイアウトを記述します。

 plt.bar(x, y, height, width, bottom, align)

x パラメータと y パラメータは、プロット内のバーの x 座標値と y 座標値を表します。 width パラメーターはバーの幅を表し、height パラメーターはバーの高さを表します。

たとえば、x という動物保護施設にいる犬と猫の数を表してみましょう。

 import matplotlib.pyplot as plt import numpy as np x = ["Cats", "Dogs"] plt.xlabel("Cats and Dogs in Shelter") plt.ylabel("No. of animals in Shelter") plt.title("Number of cats and dogs in shelter x") y = [300, 350] plt.bar(x, y, color ='black', width = 0.5)

出力:

bar_plot
Mathplotlib のバー プロットの出力

上記の例のように、color 属性を使用してバーの色をさらに指定できます。 さらに、 plt.xlabel and p.ylabel name the x and y axes,名前を付け、 plt.titleはプロットに名前を付けます。

#2。 円グラフの作成方法

Matplotlib は、 pyplotモジュールに付属のpie()関数を使用して、円グラフをプロットします。
この関数は、プロットするデータを配列形式で表します。

構文:

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

colors パラメータは、パイのスライスの色を設定します。 値の配列を使用して、各スライスの色を指定できます。

パイのすべてのスライスの詳細をさらに含めるために、 autopct引数は、Python の文字列書式表記を使用して、各スライスが表す数値のパーセンテージを追加します。 分解は引数として 0.1 から始まる値の配列を受け入れ、パイの中心からのスライスの距離を定義します。

特定のプロジェクトに割り当てられたリソースをパーセンテージで表示する円グラフをプロットしてみましょう。

 import matplotlib.pyplot as plt import numpy as np y = np.array([25, 10, 45, 20]) mylabels = ["w", "x", "y", "z"] explodevalues = [0.1, 0.2, 0, 0] colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red'] plt.title("Resources allocated for a random project") plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct='%1.1f%%', shadow = True) plt.show()

出力:

パイプロット
Mathplotlib の円グラフの出力

上記のプロットは、それぞれ w、x、y、および z というラベルの付いた 4 つのスライスを含む円グラフを示しています。 分解値は、スライスがパイの中心からどれだけ離れて配置されるかを定義します。

上のチャートから、爆発値が残りよりも大きいため、x は遠くにあります。 shadow 属性は、画像のように円グラフに影を追加しますが、 autopctは、すべてのスライスが表す円全体に対する相対的なパーセンテージを設定します。

#3。 ヒストグラム プロットの作成

ヒストグラムでは、一連の間隔を使用して、x 軸上の特定の値の範囲を表します。
一方、y 軸は周波数情報を表します。

他のプロットとは異なり、Matplotlib でヒストグラムをプロットするには、プロットを作成するために従う必要があるいくつかの定義済みの手順が必要です。

これらの手順は次のとおりです。

  1. 持っているデータ値のセットから範囲のビンを作成します。 ランダムな値を生成できるnp.random.normal()関数を使用できます。
  2. 一連の間隔を使用して、値を値の範囲に分散します。
  3. 特定の間隔ごとに値を数えます。
  4. 次に、 matplotlib.pyplot.hist()関数を使用してヒストグラムを作成します。

hist()関数は、次のようないくつかのパラメーター,受け取ります。

x – これは配列シーケンスを表します

bins – これは、整数または文字列シーケンスを含む可能性がある変数の重複しない間隔を表すオプションのパラメーターです。

range – ビンの上限と下限の範囲を定義します

align – このパラメーターは、ヒストグラムの配置を制御します。 左でも右でも真ん中でも。

color – バーの色を定義します。

rwidth – ヒストグラムのバーの相対的な幅をビンの幅に設定します。

log – log パラメーターは、ヒストグラムの軸の対数スケールを定義します。

次の例では、定義された値を使用してヒストグラムをプロットします。

 from matplotlib import pyplot as plt x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5, 50, 60, 70, 80] plt.hist(x) plt.title(Histogram plot example') plt.xlabel('x axis') plt.ylabel('frequency') plt.show()

出力:

ヒストグラム プロットを表示するイメージ
Mathplotlib のヒストグラム プロットの出力

#4。 Matplotlib のライン プロット

Matplotlib はpyplotと呼ばれるそのサブライブラリを使用します。これには、その実装に役立つさまざまな関数が付属しています。

pyplotに付属する一般的な関数であるplot()関数を使用して、折れ線グラフや、曲線プロットや複数の折れ線グラフなど、さまざまな種類の折れ線グラフをプロットします。 これらのさまざまな種類のプロットの作成は、y 軸に渡す値によって異なります。

プロットするときは、グラフを描画するmatplotlib.pyplotと Numpy をインポートします。 plot(x,y)メソッドは、ランダムな値を x および y 引数に渡すことによって、ライン プロットを作成します。

さらに、プロットにラベルを付けるラベル変数を渡すことができます。 関数 title はさらにプロットのタイトルに名前を付けますが、xlabel および ylabel 関数は軸に名前を付けます。 最後に、show() 関数がプロットを表示します。

例えば:

 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 5, 10) y = 3*x + 2 plt.title('Line plot example') plt.xlabel('x axis') plt.ylabel('y axis') plt.plot(x, y) plt.show()

結果:

line_plot-1
Mathplotlib のライン プロットの出力

np.linspace属性は、x 値の特定の間隔で等間隔​​に配置された一連の数値をプロットに返します。 これにより、 0 and 5の範囲の 10 個の値の配列が作成されます。 y の値は、対応する x の値を使用する方程式から作成されます。

散布図の作成

Matplotlib は、scatter() メソッドを使用してこのプロットを作成します。
このメソッドは、次のパラメーターを受け取ります。

 matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)

x_axis_data および y_axis_data パラメーターは、省略可能で値として None を持つことができる残りのパラメーターとは異なり、空白のままにすることはできません。 x_axis_data 引数は x 軸のデータ配列を定義しますが、y_axis_data は y 軸のデータ配列を設定します。

matplotlib の散布図の例

import matplotlib.pyplot as plt x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16] y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35] plt.title('Scatter plot example') plt.xlabel('x variable') plt.ylabel('y variable') plt.scatter(x, y, c ="green") # To show the plot plt.show()

その出力は次のようになります。

Matplotib で散布図を表示する画像
Mathplotlib の散布図の出力

matplotlib の subplot() とは

subplot()関数を使用して、1 つの Matplotlib Figure に複数のプロットを描画できます。 これにより、Figure 内の複数のプロットを表示および比較できます。

この関数は、3 つの引数を持つタプルを返します。 行と列をそれぞれ 1 番目と 2 番目の引数として、現在のプロットのインデックスを 3 番目の引数として指定します。

行と列は、Matplotlib のレイアウトを明確に定義します。

したがって、 plt.subplot(2, 1, 1)は、2 行 1 列の Matplotlib Figure をプロットし、このプロットが最初のプロットになります。

一方、 plt.subplot(2, 1, 2)は、2 行 1 列の 2 番目のプロットを表示します。

これら 2 つのプロットをプロットすると、下の例のように、それらが重ねて作成されます。

 import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(2, 1, 1) plt.plot(x,y) #plot 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(2, 1, 2) plt.plot(x,y) plt.show()

上記の例の出力は、以下の画像のようになります。

subplot を使用して 2 つのプロットを重ねて作成する

別の例を使用して、関数 subplot を使用して、1 行 2 列の 2 つの Figure をプロットしてみましょう。 これにより、プロットが並べて表示されます。

 import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(1, 2, 1) plt.plot(x,y) #plot 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(1, 2, 2) plt.plot(x,y) plt.show()

上記の例では、次の結果が表示されます。

サブプロット2

ええと、それは興味深いインタラクティブでしたね。

最後の言葉

Matplotlib は、Python でよく使用される視覚化ライブラリです。 その対話性と初心者でも使いやすい機能により、Python でのプロットに使用するのにさらに優れたツールになります。

この記事では、円グラフ、棒グラフ、ヒストグラム、散布図など、Matplotlib に付属の関数で作成できるさまざまなプロットの例について説明しました。

もちろん、Python には、機械学習の専門家やデータ サイエンティストがビジュアライゼーションの作成に使用できるライブラリが他にもいくつかあります。

Matplotlib で作成できるその他のプロットと、プロットの作成に使用する関数を調べることができます。

ハッピープロット!