グラフ描画ライブラリ!matplotlibの使い方【初心者向け】
Pythonでグラフ描画ができるライブラリmatplotlibの使い方について詳しく解説しています。折れ線グラフや棒グラフ、円グラフなど2次元でも3次元でもグラフを表示することができます。それぞれ書き方を説明しているので、参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、Pythonのグラフ描画ライブラリであるmatplotlibについて解説します。
matplotlibを使うと、様々な種類のグラフを描画したり、イメージを表示したりすることができるようになります。
Pythonでグラフを描画するには、標準的なライブラリですので、この記事を参考に、matplotlibの使い方を覚えていきましょう。
なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。
目次
田島メンター!matplotlibというのは何でしょうか?
Pythonのグラフ描画ライブラリだよ。Pythonでグラフ描画を行う、標準的なライブラリなんだ。
どのような機能があるのですか?
例を見ながら説明していくね!
matplotlibとは
matplotlibは、Pythonでグラフを描画したり、イメージを表示させたりする際に使用するライブラリです。matplotlibはオープンソースで公開されており、個人/商用問わず、誰でも無料で利用することができます。
matplotlibを使うと、様々な種類のグラフを描画することができます。主に2次元のグラフですが、3次元のグラフも描画することができます。数値計算ライブラリであるNumPyと組み合わせて利用する場合が多く、またJupyter Notebookを用いて、データ分析結果をソースコードと共にグラフィカルに表現することで、説明力の高いレポートを作成することができます。
matplotlibはNumPyと並び、Pythonでデータ分析を行うには、必須のライブラリと言えるでしょう。
matplotlibを利用するには
matplotlibを利用するには、Anacondaなどの開発環境のパッケージを使うのが簡単です。
Anacondaは、データ分析やグラフ描画など、Pythonでよく利用されるライブラリを含んだ開発環境です。
Anacondaをインストールすると、matplotlibもインストールされています。もしインストールされていない場合は、メニュー画面のEnvironmentsから、Not Installedを選択し、検索BOXに「matplotlib」と入力します。一覧にmatplotlibが表示されますので、チェックボックスで選択し、画面右下のApplyボタンを押すことでインストールすることができます。
以降は、Jupyter Notebookをもとに、matplotlibの使い方を説明していきます。
Jupyter Notebookの使い方についても合わせてご覧ください。
matplotlibの使い方
matplotlibを使う際は、初めにmatplotlibライブラリをインポートします。先頭の「% matplotlib inline」は、Jupyter Notebookで、ノートブック上にグラフを描画する際に指定する記述です。
% matplotlib inline import matplotlib.pyplot as plt
実行結果は特にありません。エラーがでなければ、正しくインポートされています。
折れ線グラフ
折れ線グラフを描画するには、plot命令を使用します。この例では、併せてグラフのタイトル、ラベルも設定しています。
% matplotlib inline import matplotlib.pyplot as plt price = [100, 250, 380, 500, 700] number = [1, 2, 3, 4, 5] # グラフを書く plt.plot(price, number) # グラフのタイトル plt.title("price / number") # x軸のラベル plt.xlabel("price") # y軸のラベル plt.ylabel("number") # 表示する plt.show()
実行結果は以下のようになります。
グラフにマーカーを表示するには markerオプションを使用します。グリッドを表示するにはgridオプションにTrueを指定します。
% matplotlib inline import matplotlib.pyplot as plt price = [100, 250, 380, 500, 700] number = [1, 2, 3, 4, 5] # グラフを書く plt.plot(price, number, marker="x") # グラフのタイトル plt.title("price / number") # x軸のラベル plt.xlabel("price") # y軸のラベル plt.ylabel("number") # グリッドを表示する plt.grid(True) # 表示する plt.show()
実行結果は以下のようになります。
散布図
散布図を描画するには、scatter命令を使用します。ソースコードで使用しているrandは、乱数を生成する命令です。
% matplotlib inline import matplotlib.pyplot as plt import numpy as np X = [np.random.rand(100) * 10] Y = [np.random.rand(100) * 10] # 散布図を描画する plt.scatter(X, Y) plt.show()
実行結果は以下のようになります。
棒グラフ
棒グラフを描画するには、bar命令を使用します。
import matplotlib.pyplot as plt labels = ["A", "B", "C", "D", "E", "F"] x = range(0, 6) y = [10, 20, 30, 40, 50, 60] # 棒グラフを描画する plt.bar(x, y, tick_label = labels) plt.show()
実行結果は以下のようになります。
円グラフ
円グラフを描画するには、pie命令を使用します。
import matplotlib.pyplot as plt # ラベルと値は反時計回りに指定します labels = ["E", "D", "C", "B", "A"] y = [10, 20, 30, 40, 50] # 円グラフからの飛び出し ex = [0, 0, 0, 0, 0.1] # 円グラフを描く plt.pie(y, explode = ex, labels = labels, autopct = '%1.1f%%', startangle = 90) plt.show()
実行結果は以下のようになります。
複数のグラフを並べて表示する
複数のグラフを並べて表示するにはfigure命令を使用し、add_subplot命令でそれぞれの領域に描画します。
書き方:add_subplot(行数, 列数, 番号)
import matplotlib.pyplot as plt fig = plt.figure() # 1行2列の左 labels = ["A", "B", "C", "D", "E", "F"] x = range(0, 6) y = [10, 20, 30, 40, 50, 60] ax1 = fig.add_subplot(1, 2, 1) ax1.bar(x, y, tick_label = labels) ax1.set_title("graph1") # 1行2列の右 labels = ["E", "D", "C", "B", "A"] y = [10, 20, 30, 40, 50] ex = [0, 0, 0, 0, 0.1] ax2 = fig.add_subplot(1, 2, 2) ax2.pie(y, explode = ex, labels = labels, autopct = '%1.1f%%', startangle = 90) ax2.set_title("graph2") # グラフを表示する plt.show()
実行結果は以下のようになります。
matplotlibについて、理解は深まったかな?
いろんな種類のグラフが描画できるんですねー。勉強になりましたー!
分かりました。ありがとうございました!
今回は、Pythonのグラフ描画ライブラリのmatplotlibについて解説しました。
これからmatplotlibを勉強したい、機械学習を使って何か作ってみたいという方は最初に理解しておきたい内容でしょう。
また、オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。
AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
この記事を監修してくれた方
太田和樹(おおたかずき) 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |