Matplotlib 散布図と線グラフの説明

Matplotlib 散布図と線グラフの説明

  • オーケストレーション
6分で読めます 更新日 Sep 12, 2019

ポイント: Matplotlibは、Pythonで散布図と線グラフを作成するための強力なライブラリで、簡単なインストールとカスタマイズ性を強調しています。このガイドでは、NumPyとPandasを使用して重要なプロット技術を示し、ユーザーが効果的にデータを可視化できるようにします。

  • グラフィカルなプロットのためにZeppelinをインストールします。
  • plot()とscatter()を利用してさまざまなスタイルを使用します。
  • 色、サイズ、および注釈を使用してプロットをカスタマイズします。

この記事では、Matplotlibの散布図と線グラフの使い方を説明します。

Zeppelinのインストール

まず、以前に説明したZeppelinをダウンロードしてインストールします。Pythonシェルからはグラフを描けないため、グラフィカルな環境が必要です。

Zeppelinを起動します。仮想Python環境を使用している場合は、その環境をソースする必要があります(例:source py34/bin/activate)。これにより、NumPyとMatplotlibがインポートされ、pipを使用してインストールする必要があります。

最初のプロット

最もシンプルなプロット:x対yです。2つの配列は同じサイズでなければなりません。なぜなら、プロットされた数値はペアで配列から取得されるからです:(1,2)、(2,2)、(3,3)、(4,4)。

plot()を使用しますが、scatter()を使用することもできます。両者はほぼ同じです。これは、plot()が線を描くか散布図を作成するかのいずれかだからです。違いは以下に説明されています。

結果は:

    import numpy as np
import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [1,2,3,4]
plt.plot(x,y)
plt.show()

結果は:

plot()関数には任意の数の引数を渡すことができます。形式はplt.plot(x,y,colorOptions, *args, **kargs)。 *argsと**kargsを使用すると、他のオブジェクトに値を渡すことができます。以下で示します。

plot()に1つの値だけを渡すと、それがy座標であると仮定します。色名の後にダッシュ("--")を付けると、各点の間に線を描きます。つまり、点をプロットするのではなく、線グラフを作成します。ダッシュを省略すると、色はポイントマーカーになります。これは三角形("v")、円("o")などです。

ここではnp.array()を使用してNumPy配列を作成します。そうしなくても、Matplotlibは内部で配列をNumPy配列に変換します。NumPyは豊富な機能セットがあるため、データサイエンスの作業には最適な選択です。

NumPy配列の使用

ここでは、各自の色を持つ2つのx,yペアを渡します。

    import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,4])

plt.plot(x,x**2,'g--', x, x**3, 'o--')

同じ2つの線グラフを上記のように、plot()関数を2回呼び出すことで描画することもできます。これにより、キャンバスに任意の数のチャートを描画できることを示しています。

    import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,4])

plt.plot(x,x**2,'g--')
plt.plot(x, x**3, 'o--')

データの要素名から配列を使用してプロットできます。以下のように記述します。ここではdata['a']とdata['b']のデータをプロットしています。

    data = {'a': np.arange(10),
    'b': np.arange(10)}
 

plt.scatter('a', 'b', c='g', data=data)

print(data)

plt.show()

これは以下と同じですが、Pandasを使用しています。

    import pandas as pd

data = {'a': np.arange(10),
    'b': np.arange(10)}
    
df=pd.DataFrame(data=data)

plt.scatter('a', 'b', c='g', data=df)
 

plt.show()

この例では、値は辞書オブジェクトで、aとbは以下に示す値です。

    'b': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 'a': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}

各ポイントのサイズを配列として渡すこともできます:

    import pandas as pd

data = {'a': np.arange(10),
    'b': np.arange(10),
     'c':  np.arange(10) * 100
}
    
df=pd.DataFrame(data=data)

plt.scatter('a', 'b', c='g', s='c', data=df)
 

plt.show()

このチャートにテキスト注釈を使用して座標を追加することができます。

引数はmatplotlib.pyplot.annotate(s, xy, *args, **kwargs)[です。

どこで:

  • sは印刷する文字列です。
  • xyは(x,y)形式で与えられる座標です。テキストが実際のポイントから少しオフセットされるように、xに0.25を加えます。
  • **kwargsは、Textオブジェクトに追加の引数を渡すことができることを意味します。そのプロパティにはfontsizeとfontweightがあります。

結果は:

    import pandas as pd

data = {'a': np.arange(10),
    'b': np.arange(10),
     'c':  np.arange(10) * 100
}
    
df=pd.DataFrame(data=data)

plt.scatter('a', 'b', c='g', s='c', data=df)

for row in df.itertuples():
    x = row.a
    y = row.b 
    str = "({0},{1})".format(x,y)
    plt.annotate(str, (x + 0.25 ,y), fontsize='large', fontweight='bold')
    
 

plt.show()

結果は:

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

オーケストレーションの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。