ポイント: 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の立場、戦略、または意見を表すものではありません。