icon
icon

Pythonでデータをプロットしてグラフを描く方法【初心者向け】

初心者向けにPythonのライブラリMatplotlibでデータをプロットしてグラフを描く方法について解説しています。ここではサンプルプログラムを使って実際に簡単な折れ線グラフを作成していきます。各軸の指定方法、オプションによる表示の変更方法などを覚えましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PythonのライブラリMatplotlibでデータをプロットしてグラフを描く方法について解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

ライブラリMatplotlibでデータをプロットしてグラフを描く方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

データのプロットとは

プロット(plot)とは、描画する、点を打つなどの意味を持ちます。データをプロットした図をグラフといいます。 Python でグラフを作成するライブラリが Matplotlib です。  Matplotlib は、 Python でグラフを描画する際、最も多く使われているオープンソースのライブラリです。ライセンスはBSDスタイルの独自ライセンスです。「マットプロットリブ」と読みます。

Matplotlib は、2Dだけでなく3Dのグラフも描画することができます。また、 Python の他のライブラリとの親和性が高く、様々なデータを簡単にグラフ化することができます。 Matplotlib では以下のようなグラフを描画することが可能です。

  • 折れ線グラフ
  • 折れ線グラフを応用した曲線グラフ
  • ヒストグラム
  • 散布図
  • 棒グラフ
  • 円グラフ
  • 箱ひげ図
  • 3Dグラフ

オプションの指定方法など、詳細は公式サイトを確認してください。

https://techacademy.jp/magazine/wp-content/uploads/2017/07/index.html2_-620×437-e1499391542321.png

Matplotlib によるグラフの作成方法は以下の記事も参考にしてください。

PythonのライブラリMatplotlibで棒グラフを描く方法

Pythonでヒストグラムを作成する方法

 

データをプロットしてグラフを描く方法

Matplotlib で線グラフを書くには、 matplotlib.pyplot モジュールの plot メソッドを使用します。

描画対象となるデータは、y軸のみ、またはx軸とy軸の両方を指定することができます。

# y軸のみ指定する方法
plt.plot(y軸の値, オプション)

# x軸とy軸の両方を指定する方法
plt.plot(x軸の値, y軸の値, オプション)

オプションは省略可能です。オプションには以下のような種類があります。

名称 説明 値の例
marker 値の位置の印 “o”, “v”, “^”, “d”
color 線の色 “red”, “blue”, green”
linestyle 線の形 “-“, “–“, “-.”, “:”

また、グラフ全体にラベルやタイトルを付けることができます。

plt.title("タイトル")
plt.xlabel("x軸のラベル")
plt.ylabel("y軸のラベル")

# グリッド線を表示するならTrue
plt.grid(True)

グラフを分割して描画することもできます。グラフの分割には add_subplot メソッドを使用します。

# 例:1行2列に分割し、1番目(左側)に描画する
fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(...)

ひととおり設定が終わったら、show メソッドでグラフを描画します。

plt.show()

なお、JupyterNotebookを使用する場合で、1セルで1度だけグラフ描写したい場合は、showメソッドは使用せずとも、

ax1.plot(...);

と、最後の行末にセミコロンを追記すると、JupyterNotebookが表示まで行ってくれます。

1セルに2回以上グラフ描写する場合は、

plt.show()

を利用していただくと良いです。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

まずは Matpliotlib をインストールしましょう。パソコンが Macならターミナル、Windowsならコマンドプロンプトから以下のコマンドでインストールします。なお、事前に Python のインストールが必要です。

pip install matplotlib

また、実行環境により、グラフを表示させるための設定が必要です。

pipについては、

Pythonのパッケージ管理システムpipの使い方を現役エンジニアが解説【初心者向け】

という記事も参考にしていただくと良いですよ。

 

ターミナル/コマンドプロンプトから実行する場合

グラフをファイルに保存して確認します。

今回であれば、hoge.pngというファイルを開いて確認する操作が必要です。

importから始まる行は、必要なライブラリを使うための準備です。

importについては、

Pythonのfromやimportの基礎を現役エンジニアが解説【初心者向け】

という記事も参考にしていただくと良いですよ。

ファイルに保存するには以下ように「この行を追記」と書かれた行を追記します。

import matplotlib as mpl
mpl.use('Agg') # この行を追記
import matplotlib.pyplot as plt
# ここにグラフを描画してファイルに保存する処理
plt.savefig("hoge.png") # この行を追記

 

JupyterNotebookから実行する場合

JupyterNotebookから実行すると、実行するだけで表示まで行うことが可能です。

先頭に「% matplotlib inline」と記載します。

% matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# ここにグラフを描画する処理を記載する

 

それではサンプルプログラムと実行結果を確認していきましょう。はじめに以下のプログラムを実行します。

折れ線グラフを表示するサンプルプログラム

% matplotlib inline
import matplotlib.pyplot as plt

x = [100, 200, 300, 400, 500, 600]
y = [10, 20, 30, 50, 80, 130]

plt.plot(x, y);

実行結果は以下のようになります。

複数の折れ線グラフを表示するサンプルプログラム

% matplotlib inline
import matplotlib.pyplot as plt

x = [100, 200, 300, 400, 500, 600]
y1 = [10, 20, 30, 50, 80, 130]
y2 = [10, 15, 30, 45, 60, 75]

plt.plot(x, y1, marker="o", color = "red", linestyle = "--")
plt.plot(x, y2, marker="v", color = "blue", linestyle = ":");

実行結果は以下のようになります。

グラフを分割して表示するサンプルプログラム

% matplotlib inline
import matplotlib.pyplot as plt

x = [100, 200, 300, 400, 500, 600]
y1 = [10, 20, 30, 50, 80, 130]
y2 = [10, 15, 30, 45, 60, 75]

fig = plt.figure()

# 1行2列に分割した中の1(左側)
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(x, y1, marker="o", color = "red", linestyle = "--")

# 1行2列に分割した中の2(右側)
ax2 = fig.add_subplot(1, 2, 2)
ax2.plot(x, y2, marker="v", color = "blue", linestyle = ":");

実行結果は以下のようになります。

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。