matplotlibを使用してPython 3でデータをプロットする方法

前書き

Pythonはデータの処理に最適です。 多くの場合、データセットには複数の変数と多くのインスタンスが含まれ、何が起こっているのかを把握するのが難しくなります。 データの視覚化は、データのパターンを識別するのに役立つ便利な方法です。

たとえば、あなたが不動産業者であり、家の年齢とその販売価格の関係を理解し​​ようとしているとします。 データに5つの家から成る1つのブロックが含まれていれば、何が起こっているのかを把握するのはそれほど難しくありません。 ただし、500の家の町全体からのデータを使用したいとします。 そうすると、年齢が価格にどのように影響するかを理解することがかなり難しくなります。 販売価格と年齢をプロットすることでデータを視覚化することで、2つの間に存在する関係を明らかにすることができます。

視覚化は、特にデータに精通していない人に概念を普遍的な方法ですばやく簡単に伝える方法です。 データを扱う場合は常に、視覚化は分析の必要な部分です。

もともとJohnDによって作成された2Dプロットライブラリmatplotlibを使用します。 ハンターはそれ以来、非常に活発なオープンソース開発コミュニティプロジェクトになりました。 高品質の折れ線グラフ、散布図、ヒストグラム、棒グラフなどを生成できます。 各プロットは異なる方法でデータを表示します。データの最も有益なプロットに落ち着く前に、さまざまなタイプのプロットを試してみると便利です。 視覚化は芸術と科学の融合であることに留意してください。

視覚化の重要性を考慮して、このチュートリアルではmatplotlibを使用してPythonでデータをプロットする方法を説明します。 少数のデータセットを使用して散布図を生成し、タイトルや凡例などの情報をプロットに追加し、プロットポイントの外観を変更してプロットをカスタマイズします。

このチュートリアルを終了すると、Pythonでデータをプロットできるようになります!

前提条件

このチュートリアルでは、Python 3をインストールし、コンピューターにローカルプログラミング環境をセットアップする必要があります。 そうでない場合は、appropriate installation and set up guide for your operating systemをたどって設定できます。

[[step-1 -—- importing-matplotlib]] ==ステップ1—matplotlibのインポート

Pythonで作業を始める前に、matplotlibモジュールがインストールされていることを再確認しましょう。 コマンドラインで、次のコマンドを実行してmatplotlibを確認します。

python -c "import matplotlib"

matplotlibがインストールされている場合、このコマンドはエラーなしで完了し、準備完了です。 そうでない場合は、エラーメッセージが表示されます。

OutputTraceback (most recent call last): File "", line 1, in  ImportError: No module named 'matplolib'

エラーメッセージが表示された場合は、pipを使用してライブラリをダウンロードします。

pip install matplotlib

matplotlibがインストールされたので、Pythonでimportできます。 まず、このチュートリアルで使用するスクリプトscatter.pyを作成しましょう。 次に、スクリプトで、matplotlibをインポートします。 プロットモジュール(pyplot)のみを使用するため、インポートするときに指定します。

scatter.py

import matplotlib.pyplot as plt

matplotlibの末尾に.pyplotを追加して、インポートするモジュールを指定します。 スクリプトでモジュールを参照しやすくするために、モジュールをpltと省略します。 これで、データの作成とプロットに移ることができます。

[[step-2 -—- creating-data-points-to-plot]] ==ステップ2—プロットするデータポイントの作成

Pythonスクリプトでは、使用するデータを作成します。 2Dで作業しているため、データポイントごとにX座標とY座標が必要になります。

matplotlibがどのように機能するかを最もよく理解するために、データを実際のシナリオに関連付けます。 コーヒーショップの所有者であるふりをしてみましょう。年間を通しての平均的な天気とアイスコーヒーの合計購入数との関係に興味があります。 Xvariableは、1か月に販売されたアイスコーヒーの総数になり、Y変数は、各月の華氏の平均気温になります。

Pythonスクリプトでは、X(販売されたアイスコーヒーの合計)とY(平均気温)の2つのリスト変数を作成します。 それぞれのlistsの各項目は、各月(1月から12月)のデータを表します。 たとえば、1月の平均気温は華氏32度で、コーヒーショップでは590個のアイスコーヒーを販売していました。

scatter.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

データが得られたので、プロットを開始できます。

[[ステップ-3 -—-プロットデータ]] ==ステップ3—データのプロット

散布図は、2つの変数間の関係を決定するのに最適です。この例では、このグラフタイプを使用します。 matplotlibを使用して散布図を作成するには、scatter()関数を使用します。 この関数には、X座標値とY座標値を表す2つの引数が必要です。

scatter.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)
plt.show()

プロットを作成するたびに、plt.show()を使用してプロットを表示することも指定する必要があります。

先に進む前に、スクリプトが機能していることを確認しましょう。 スクリプトを保存し、コマンドラインから実行します。

python scatter.py

すべてがうまくいけば、次のようにウィンドウにプロットが表示されるはずです。

Alt Scatter plot

このウィンドウはデータの表示に最適です。インタラクティブであり、ラベルや座標を表示するホバリング、ズームインまたはズームアウト、保存などのいくつかの機能が含まれています。

[[step-4 -—- adding-titles-and-labels]] ==ステップ4—タイトルとラベルの追加

スクリプトが適切に動作していることがわかったので、プロットに情報を追加し始めることができます。 データが何を表すかを明確にするために、タイトルと各軸のラベルを含めましょう。

最初にタイトルを追加します。 スクリプトのplt.show()行の前にタイトルを追加します。

scatter.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.title('Relationship Between Temperature and Iced Coffee Sales')

plt.show()

次に、plt.title線のすぐ下に軸のラベルを追加します。

scatter.py

...
plt.xlabel('Cups of Iced Coffee Sold')
plt.ylabel('Temperature in Fahrenheit')
...

スクリプトを保存して再度実行すると、より有益な更新されたプロットが表示されます。 更新されたプロットは次のようになります。

Alt Scatter plot with a title and X/Y labels.

[[step-5 -—- customizing-a-plot]] ==ステップ5—プロットのカスタマイズ

使用するすべてのデータセットは一意であり、情報の表示方法をカスタマイズできることが重要です。 視覚化も芸術であることに注意してください。 matplotlibには、さまざまな色、ポイントシンボル、サイズ変更など、多くのカスタマイズ機能が含まれています。 ニーズに応じて、軸に異なる範囲を使用して、異なるスケールで遊んでみたいと思うかもしれません。 次のように、軸の新しい範囲を指定することにより、デフォルトのパラメーターを変更できます。

scatter.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.xlim(0,1000)
plt.ylim(0,100)

plt.title('Relationship Between Temperature and Iced Coffee Sales')

plt.show()
...

元のプロットからの点は少し小さく見えたので、青は希望の色ではないかもしれません。 おそらく、ポイントに円ではなく三角形が必要でしょう。 ポイントの実際の色/サイズ/形状を変更する場合は、最初のplt.scatter()呼び出しでこれらの変更を行う必要があります。 次のパラメーターを変更します。

  • s:ポイントのサイズ、デフォルト= 20

  • c:色、シーケンス、または色のシーケンス、デフォルト= ‘b’

  • marker:ポイントシンボル、デフォルト= 'o'

可能なマーカーには、ダイヤモンド、六角形、星など、さまざまな形状が含まれます。 色の選択には、青、緑、赤、マゼンタが含まれますが、これらに限定されません。 また、色にHTML 16進文字列を提供することもできます。 可能なmarkersおよびcolorsの包括的なリストについては、matplotlibのドキュメントを参照してください。

プロットを読みやすくするために、ポイントのサイズを3倍にし(s=60)、色を赤に変更し(c='r')、シンボルを三角形に変更します(marker='^') 。 plt.scatter()関数を変更します。

plt.scatter(X, Y, s=60, c='red', marker='^')

更新されたスクリプトを実行する前に、コードが正しいことを再確認できます。 カスタムプロットの更新されたスクリプトは次のようになります。

scatter.py

import matplotlib.pyplot as plt


X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

#scatter plot
plt.scatter(X, Y, s=60, c='red', marker='^')

#change axes ranges
plt.xlim(0,1000)
plt.ylim(0,100)

#add title
plt.title('Relationship Between Temperature and Iced Coffee Sales')

#add x and y labels
plt.xlabel('Cups of Iced Coffee Sold')
plt.ylabel('Temperature in Fahrenheit')

#show plot
plt.show()

手順6に進む前に、必ずスクリプトを保存してください。

[[step-6 -—- saving-a-plot]] ==ステップ6—プロットを保存する

コードが完成したので、それを実行して新しいカスタマイズされたプロットを見てみましょう。

python scatter.py

ウィンドウが開き、プロットが表示されます。

Alt Final scatter plot with title and X/Y labels and customized with larger

次に、下部のツールバーにあるディスクのアイコンである保存ボタンをクリックして、プロットを保存します。 画像はインタラクティブなグラフではなくPNGとして保存されることに注意してください。 これで、独自の散布図が作成されました。おめでとうございます!

結論

このチュートリアルでは、Pythonでmatplotlibを使用してデータをプロットする方法を学びました。 データを視覚化し、プロットをカスタマイズできるようになりました。

matplotlibの練習を続けるには、「https://www.digitalocean.com/community/tutorials/how-to-graph-word-frequency-using-matplotlib-with-python-3[How To Graph Python 3でmatplotlibを使用した単語の頻度]。

Related