Pythonは昨今のAI(人工知能)、機械学習のブームで人気が高まっているプログラミング言語ですが、統計などの分野でも頻繁に利用されます。Pythonには、「Matplotlib」というグラフ描画のための便利なライブラリがあり、このライブラリを利用することで、誰でも簡単にさまざまなグラフの描画が可能です。
この記事では、Matplotlibの概要とグラフタイトルや軸ラベルの追加といった基本操作をご紹介します。また、折れ線グラフや棒グラフ・円グラフなどの描き方をコードとともに解説します。
公開日:2021年8月12日
INDEX
Pythonでグラフを作成できる?やり方は?
Pythonを使ってグラフを作成する場合、「Matplotlib」と呼ばれるライブラリを利用することがほとんどです。Matplotlibを利用すれば、簡単なコードで折れ線グラフや棒グラフ・円グラフ・散布図などのさまざまなグラフを描画できます。
Matplotlibはデータの前処理を行うPandasや、数値計算を行うNumPy などのライブラリと組み合わせて利用されることが多く、Pythonにおけるデータ分析では必須とも言えるライブラリとなっています。また、Jupyter Notebookと合わせてデータ分析結果をグラフィカルに表現するためにも用いられます。
Matplotlibはオープンソースのライブラリであり、個人・商用を問わず誰でも無料で利用可能です。利用する際は、Pythonのコードでライブラリを呼び出すだけで使うことができます。詳しくは後ほどコードを交えて紹介します。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Matplotlibライブラリのインストール方法
PythonのライブラリであるMatplotlibは、利用する前にインストールしておく必要があります。インストールする方法としては主に次の2つが挙げられます。
- pipコマンドを利用した直接インストール
- Anacondaを利用したインストール
AnacondaはPythonのディストリビューション(必要なソフトウェアをひとまとめにしたもの)であり、データサイエンスのためのパッケージ管理や、デプロイメントの簡略化のために利用されるものです。Anacondaをインストールするだけで、多くのライブラリが自動的にインストールされるため、Pythonを頻繁に利用する際はAnacondaの利用がおすすめです。
次に、Matplotlibの具体的なインストール手順をお伝えします。
pipコマンドを利用して直接インストールする場合は、コマンドラインから次のコマンドを入力することでインストールできます。
1 |
pip install matplotlib |
Anacondaを使用する場合は、Anaconda Navigatorから「Environments」→「Not installed」を選択し、Matplotlibをインストールします。デフォルトの環境設定では最初からインストール済みとなるため、ご利用の環境に合わせてインストールしてください。
Anacondaのインストール方法など詳しい情報を知りたい方は、「AnacondaでPythonの環境構築!概要~インストール方法まで解説」にて詳しくまとめていますので、こちらもぜひご覧ください。
なお、Matplotlibはインストールしただけでは利用できません。プログラム内で明示的にインポートする必要がありますので、具体的な利用方法も含めてこの後解説します。
Pythonのグラフ描画の基本をご紹介!
ここからは、Matplotlibの使い方やグラフ描画の基本について紹介します。以降はJupyter Notebookを使って解説を進めるものとしますが、Anacondaを利用中の方は、Anaconda Navigatorから起動可能です。
Matplotlibを利用する際には、最初にインポートするところから始めます。グラフを描画するためにMatplotlibライブラリから「pyplot」を呼び出して利用しています。
以降、実際にグラフを描画した例を、画面のキャプチャと共にご紹介します。まずは基本的な流れを確認しましょう。
In [2]の部分でxとyの定義をし、plot命令を用いてグラフを描画します。pyplotを呼び出す際に、「as」を使って別名をつけることも可能です。
単純にグラフを出すだけであれば、これだけのコードで実現可能ですが、グラフタイトルやラベルを付けてみましょう。これらは簡単なコードを追加するだけで実現できます。
上の図のように、「.title」や「.xlabel」、「.ylabel」を使って、グラフタイトルやラベルをつけることが可能です。また、デフォルトでは文字が小さいため、フォントサイズをそれぞれ25pt、15ptの大きさに変えています。そのほかに、凡例をつけたり、複数のグラフを描画したりすることも可能です。
【コード】
1 2 3 4 5 6 |
from matplotlib import pyplot as pyp x = [1,3,5,30,55,100]y = range(len(x))x2 = [3,5,10,29,50,120] pyp.title("Matplotlib Graph", {"fontsize":25})pyp.xlabel("x-number", {"fontsize":15})pyp.ylabel("y-number", {"fontsize":15}) pyp.plot(x,y, label='graph1')pyp.plot(x2,y, label='graph2') pyp.legend() pyp.show() |
複数のグラフを描画する場合は、「.plot」を複数呼び出すことで実現できます。凡例は「.legend」で簡単に追加できますが、「.plot」にそれぞれラベルを付ける必要がありますので、注意点として覚えておきましょう。
このように、Matplotlibを利用すれば簡単なコードでグラフの描画が可能です。このほかにも、グラフの色を変えるなどのいろいろなオプションがありますので、実際に使いながら覚えていくとよいでしょう。
実際にPythonでグラフを描こう!グラフタイプ別の作成方法
ここからは、Matplotlibを使ったさまざまなグラフタイプの作成方法を簡単に紹介します。
折れ線・曲線グラフの描き方
折れ線グラフはグラフ上の点と点を結んだグラフであり、.plot関数を使って描画します。
.plot関数は渡されたデータを点と点で結び、グラフを表示します。
「.plot(X軸、Y軸、オプション)」
オプションとして「marker」を利用すると、グラフ内のデータのスタイル変更が可能です。markerでは「o=点」「^=三角の点」「s=四角の点」が利用できます。オプションを変えることで、さまざまなスタイルのグラフが作成できます。ぜひ試してみてください。
また、.plot関数に渡すデータによって曲線グラフを描画することもできます。次の例では、NumPy を使ってサイン波とコサイン波を描画しました。
このように、折れ線グラフや曲線グラフを描く際は、.plot関数を利用します。
棒・円グラフの描き方
棒グラフや円グラフを描く際には、pyplotの別の関数を利用します。
- 棒グラフ:.bar関数、.barh関数
- 円グラフ:.pie関数
.bar関数を利用すると、次のような縦棒グラフが描画できます。
横棒グラフを作成したい場合は、.barh関数を利用します。
続いて、円グラフは.pie関数で描画可能であり、次のように表示されます。
.pie関数を利用して円グラフを作成する場合、さまざまなオプションを付け加えることで、より見やすいグラフが作成できます。例えば、次の例では円グラフ内に割合を表示し、最も割合が多い項目を際立たせました。
円グラフ内に割合を表示するためにはオプションとして「autopct」を利用し、「%1.1f%%」は小数点の表示桁数を示しています。また、最も割合が多い項目を際立たせるために、「explode」を利用しています。これは「該当する項目をどの程度ずらすか」を指定するためのオプションであり、今回は1つ目の項目を10%ずらすことで強調表示しています。
例えば、2つ目の項目を強調表示したい際は、exリストの2番目を変更することで次のように変更可能です。
散布図の描き方
散布図を描きたい場合は.scatter関数を利用します。
こちらも.plot関数と同じようにオプションを変更することで、さまざまなスタイルの散布図が作成可能です。
ヒストグラムの描き方
ヒストグラムを描きたい場合は、.hist関数を利用します。ヒスとグラフは棒グラフと違い、データが区間ごとに区切られており、グラフの間隔がない点が特徴です。
今回はNumPy のrandom.normal関数を使い、正規分布に従う乱数を利用しました。「.random.normal(10,20,150)」は、平均10、標準偏差20で、乱数を150個作成することを意味しています。
ヒストグラフを横棒として表示したい場合は、オプションとして「orientation=”horizontal”」を指定すると作成可能です。
複数のグラフを並べる方法
ここまで、グラフを一つずつ表示してきましたが、レポートの作成などの際には、複数のグラフを並べたい場合もあるでしょう。その場合は、.subplot関数を用いると、場所を指定しながら複数のグラフを並べることが可能です。
【コード】
1 2 3 4 5 6 7 8 9 10 |
from matplotlib import pyplot as pypimport NumPy as np hist_x = np.random.normal(10,20,150) plot_x = np.arange(-10,15,0.1)plot_y = np.sin(plot_x)plot_y2 = np.cos(plot_x) pie_labels = [".com",".jp",".co.jp",".ne.jp",".net"]pie_data = [35,23,17,15,10] subp1 = pyp.subplot(2,2,1)subp2 = pyp.subplot(2,2,2)subp3 = pyp.subplot(2,2,3)subp4 = pyp.subplot(2,2,4) subp1.hist(hist_x) subp2.plot([1,2,3,4],[2,3,6,8],"r--") subp3.plot(plot_x,plot_y)subp3.plot(plot_x,plot_y2) subp4.pie(data, labels=labels) pyp.show() |
コードは少し長くなりますが、基本的にはこれまでのグラフ描画と同じです。これまでとの違いは、.subplot関数を使って描画位置を指定している点となります。
「.subplot(x描画数,y描画数,ポジション)」によって指定したポジションを変数に代入し、それぞれの描画位置で各種グラフを描画するように指定しています。今回の例では、subp1変数に2×2の1番目のポジションを指定し、そのポジション(subp1)に.hist関数を使ったグラフを描画する、という指定をしています。ポジションは「Z」を描くように、左上から右下にかけて順番が定められています。
また、複数のグラフを描画する際には、Matplotlibにおけるグラフの構造として、「Figure」と「Axes」の関係を理解しておくとわかりやすくなります。
Matplotlibにはグラフを描画する際に2つのスタイルが存在します。オブジェクトを意識しない「pyplotスタイル」と「オブジェクト指向スタイル」の2つです。ここまでは前者のpyplotスタイルで進めてきました。
オブジェクト指向スタイルは、Figure・Axesオブジェクトを作成してグラフを描画するものであり、コードが複雑になるものの、複雑な設定が可能となります。イメージとしては、Figureオブジェクトがキャンバスであり、グラフはAxesオブジェクトとしてFigureオブジェクトの中に並べていくイメージです。
Figure・Axesオブジェクトを利用すれば、サイズの異なるグラフの描画も可能になります。
今回の例では、.add_subplot関数を使ってサイズの異なるグラフの描画を行っています。単純にグラフを描画するだけであれば、pyplotスタイルで問題ありませんが、より複雑なグラフの描画を行う際には、オブジェクト指向スタイルでの描画も検討するとよいでしょう。
Pythonで作成したグラフの書き出し方法
グラフを画像ファイルとして書き出す場合は、Figureオブジェクトを作成して.savefig関数でファイル名を指定すると保存できます。
1 |
fig = pyplog.figure()fig.savefig("ファイル名") |
実際のコードは次のものを参照してください。
上記のコードを実行すると、以下のように「graph.png」という名前で画像ファイルが保存されます。
このとき、ファイルが保存される場所はコードと同じ場所です。また、画像をファイルとして保存する際には、拡張子を指定することで任意のフォーマットで保存できます。以下のフォーマットに対応しているため、利用する際には任意の拡張子を指定して利用しましょう。
eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff
なお、オブジェクト指向スタイルではなく、pyplotスタイルでもファイルの保存は可能です。その場合は、「pyplot.savefig()」を利用します。ただし、複数のオブジェクトを生成している場合には、最後のグラフのみが保存されるため注意が必要です。
Pythonでグラフを描画する際には、Matplotlibライブラリを利用すると、簡単なコードで実現できます。Matplotlibでは、折れ線グラフや曲線グラフ、棒グラフ、円グラフ、ヒストグラムなど、さまざまなグラフが描画可能です。
今回ご紹介したグラフの描画方法は基本的なものであり、もっと複雑なグラフ描画も可能ですので、Matplotlib の公式ページなどを参考にしながらさまざまなグラフを描画してみましょう。また、Matplotlibを利用する際には、PandasやNumPy も併せて利用することが多いため、これらも一緒に学習を進めてみてはいかがでしょうか。
NumPy+matplotlib実践トレーニング -機械学習、深層学習の基礎として学ぶデータの操作と可視化-
機械学習、深層学習(ディープラーニング)で非常に有用なツール、NumPyとmatplotlibを練習するコースです。Colaboratory環境を使用します。Pythonで効率よくデータを操作し、可視化できるようになりましょう。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
公式サイトを見る余裕がなく、基本的な処理を勉強してきましたが、アウトプットをするのが楽しくなる講座でした。ニューラルネットの基本にも立ち返ることができ、復習としてもとても有意義な講座となりました。いろいろパラメータを変えたりして、できることを増やせればと思います。
評価:★★★★★
NumPyとmatplotlibを学びなおす良い機会となりました。機械学習、深層学習については奥が深いので、いろいろとやってみたいと思います。また、Jupyter環境ではなく、Colaboratory環境と言うのも、良かったです。
最新情報・キャンペーン情報発信中