ポイント: Matplotlibを使用すると、ZeppelinやJupyterのような環境で効果的なデータ可視化のためのさまざまなチャートやグラフを作成できます。折れ線チャート、散布図、ヒストグラム、円グラフなど、さまざまなチャートタイプをサポートしており、ユーザーがデータを効率的に可視化できるようにします。
- Matplotlibには注釈や複数のチャートタイプの機能が含まれています。
- チャートを表示するにはグラフィカルインターフェースが必要であり、これはZeppelinやJupyterのようなツールが提供します。
ビッグデータを扱っている場合は、チャートを作成する方法を学ぶ必要があります。チャートはグラフとも呼ばれます。チャート作成は非常に複雑なトピックになり得るため、ここではシンプルな例から始めます。
チャートにはグラフィカルな環境が必要
バッシュシェルのような文字ベースの環境で実行されるPythonプログラムからチャートを描画することはできません。代わりに、グラフィカルな環境が必要です。
ほとんどのデータサイエンティストは、ブラウザでMatplotlibを使用します。ブラウザはグラフィックを表示できるためです。最良の方法は、ZeppelinやJupyterを使用することで、どちらもグラフィックを表示できるコードインタプリタおよびツールです。
Matplotlibはもともとmatlabと呼ばれるツールのためのグラフィックフロントエンドとして書かれました。Matlabは主にエンジニアやデータサイエンティストによって使用されますが、Pythonでもうまく機能します。
Zeppelinの使用
以前、ここでZeppelinについて議論しました。Zeppelinを使用すると、さまざまなプログラミング言語でプログラムをWebページで実行できます。Spark、Python、Angular、MarkDown、Livy、Bashシェルなどをサポートしています。(Bashシェルをサポートしているため、パスワードを追加せずに公開Webページに配置したくありません。)Zeppelinにはいくつかの組み込みのグラフィカルな機能もありますが、より高度なチャートを作成するには、Matplotlibのような高度なチャート作成製品が必要です。
ここでは、Matplotlibを使用して折れ線チャートと散布図、ヒストグラムを描画する方法を示します。まず、Zeppelinをインストールする必要があります。これは、ダウンロードして解凍するだけで簡単です。Macでは、デーモンをzeppelin-daemon.sh startで開始します。
折れ線チャート
折れ線チャートは、一方の軸を別の軸に対してプロットします。これは、高校の代数で使用される家族xy軸のようなものです。
Zeppelinは配列で作業します。以下の例では、Numpy関数np.arange(1,5,0.25)を使用して、0.25の間隔で均等に配置された配列を作成します。次に、プロットを呼び出すのは簡単です:plt.plot(y, 'bs')、ここでbsは青い四角を意味します。配列を1つだけ渡すと、それはy軸の値であると仮定し、自動的にx軸を計算します。
散布図
ヒストグラム
%python
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(1,5,0.25)
plt.plot(y, 'bs')
ここに結果のチャートがあります。
さて、ラインに注釈を追加しましょう。Matplotlibは、y値に基づいて自動的にx値を計算します。上記の線の傾き(m)は、y = mx +1の形で、線を視覚的に見て推定するだけで約0.29です。したがって、これらの(x,y)座標をプロットして各点にラベルを付けましょう。
増分を0.25ではなく1にして、チャートが混雑しないようにしましょう。
以下のコードでは、pythonのzip(A.B)関数が配列AとBからタプル((x[0],y[0])...)を返します。これは、各x,y座標をタプル(x,y)の形式で取得するために行います。配列AとBを使用してx,y座標を格納します。
%python
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(0,5,1)
A = []
B = []
for x in range(1, len(y)):
y= (0.29*x)
A.append(x)
B.append(y)
for xy in zip(A,B):
plt.plot( xy[0],xy[1],'gs')
plt.annotate('(%s, %s)' % xy, xy=xy, textcoords='data')
ここに同じ線があり、各(x,y)座標が線上に注釈として印刷されています。
散布図は点をプロットし、線はプロットしません。
%python
import matplotlib.pyplot as plt
import numpy as np
n = 10
x = np.random.rand(n)
y = np.random.rand(n)
plt.scatter(x,y)
ランダムな整数を使用したため、点はあちこちにあります。rand()関数を使用し、randintではないため、1以下のランダムな浮動小数点数が生成されました。
ヒストグラムでは、垂直バーは各値のすべての点の割合、すなわち頻度分布です。したがって、ここではランダムな数の17.5%が3でした。数字100は配列のサイズと呼ばれます。ここでは1x100の配列があり、同等にベクトルと呼ばれます。
例えば、x = np.random.randint(low = 0, high = 15, size=[4,4])を使用した場合、ランダムな数の4x4行列が作成されます。
%python
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(low = 0, high = 15, size=100)
plt.figure()
plt.hist(x)
plt.show()
これにより、頻度分布が示されます。言い換えれば、0から15の間に100のランダムな整数を作成するように指示しました。
以前、積み上げ棒グラフの作成方法を説明しました。
円グラフ
以下に円グラフを作成します。各スライスの割合の合計は100%に達します。これはヒストグラムと同じです。したがって、各スライスxi(matplotlibではウエッジと呼ばれます)はxi/sum(x1…xn)全体のパーセンテージを表します。
以下にラベルを提供します。これらはデータと同じ順序でなければなりません。Matplotlibは自動的にそれを判断できないため、順序が異なるとラベルが論理的ではなくなります。
また、各ウエッジにパーセンテージをプロットするためのautopctを提供します。そこにカスタム関数を置くこともできます。
%python
import matplotlib.pyplot as plt
import numpy as np
x = [100, 200, 300, 400, 500]
labels = ['first', 'second', 'third', 'fourth', 'fifth']
plt.pie(x,labels=labels,autopct='%1.1f%%')
plt.show()
データ可視化ガイド
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。