PythonのMatplotlib入門、これから始めようとする初心者向けに分かりやすく解説|Python入門(14)

Python
この記事は約33分で読めます。

ーーーーーーーーーーーーーーーーーーーーー2026年3月13日執筆ーーーーーーーーーーーーーーーーー

  1. PythonのMatplotlib入門、これから始めようとする初心者向けに分かりやすく解説|Python入門(14)のPodcast
  2. はじめに
  3. Matplotlibの本質:ライブラリの概要と2025年以降の展望
  4. Matplotlibの内部構造:Figure、Axes、Artistの階層関係
    1. 階層構造の構成要素
  5. 開発環境の構築と2026年を見据えた日本語化対策
    1. 日本語文字化け問題の最新解決策
  6. プログラミング・スタイルの選択:Pyplotとオブジェクト指向インターフェース
    1. Pyplotインターフェース(暗黙的スタイル)
    2. オブジェクト指向(OO)インターフェース(明示的スタイル)
  7. 基本的なグラフ描画:実践的なテクニックとパラメーター制御
    1. 折れ線グラフ:時系列変化の可視化
    2. 棒グラフ:カテゴリー間の比較
    3. 円グラフ:構成比の表現
    4. 散布図とヒストグラム:相関と分布の解析
  8. 2025年以降のレイアウト設計:サブプロットとタイル配置
    1. 高度なレイアウトエンジン:constrained_layout
    2. 自由自在なタイル配置:subplot_mosaic
  9. 色彩理論とアクセシビリティ:Petroff10とカラーマップの選択
  10. レーダーチャートの構築:極座標プロットの応用
  11. 保存とエクスポート:出版品質を実現するためのベストプラクティス
  12. エコシステムの拡張:PandasとSeabornによる効率化
    1. Pandasとの連携
    2. Seabornによる洗練された統計描画
  13. 結論
  14. 参考資料
  15. はじめに
  16. Matplotlibとは?
  17. Matplotlibを使う準備
  18. Matplotlibの基本的な使い方
    1. Matplotlibで日本語を使えるようにする準備
    2. 折れ線グラフ
    3. 棒グラフ
    4. 円グラフ
    5. 散布図
    6. ヒストグラム
    7. レーダーチャート
  19. おわりに

PythonのMatplotlib入門、これから始めようとする初心者向けに分かりやすく解説|Python入門(14)のPodcast

下記のPodcastは、Geminiで作成しました

はじめに

現代のデータサイエンスやソフトウェア開発において、数値データの背後に隠された意味を直感的に理解するための「データの可視化」は不可欠なプロセスです。Pythonにおいてその中心的な役割を担い続けているのが、Matplotlib(マットプロットリブ)というライブラリです。2010年のバージョン1.0リリースから現在に至るまで、Matplotlibは科学計算からビジネスレポートまで、出版品質の図表を作成するための標準ツールとして君臨しています [1]

本報告書では、最新のPython 3.13環境やMatplotlib 3.10系統のアップデートを踏まえ、初心者が実務で活用するための基礎から、プロフェッショナルな品質を実現するための応用技術までを網羅的に解説します。データの可視化は単なる図の作成ではなく、データという無機質な数字の集合に「物語」を与える作業であることを念頭に置いて進めていきましょう [1]

Matplotlibの本質:ライブラリの概要と2025年以降の展望

Matplotlibは、アメリカの神経生物学者John D. Hunter氏によって開発が開始されました。彼は当時、脳波データの視覚化に高価なプロプライエタリ(有償)ソフトを使用せざるを得ない状況を打破するため、オープンソースで自由な描画環境を目指してこのライブラリを作り上げました [1]。その設計思想は、非常に高いカスタマイズ性と、MATLABのような簡便な操作性を両立させることにあります [1]

2024年12月にリリースされたMatplotlib 3.10.0以降、開発コミュニティはモダンなコンピューティング環境への適応をさらに強化しています。特筆すべきは、Python 3.13で導入されたフリースレッドモードへの暫定的な対応です [1]。これにより、将来的にマルチコアプロセッサの性能をより直接的に描画処理へ活かせる可能性が広がっています。また、アクセシビリティ(色覚多様性への配慮)を重視した新しいカラーサイクルの導入など、現代社会の要請に応える進化を遂げています [1]

Matplotlibの内部構造:Figure、Axes、Artistの階層関係

初心者がMatplotlibを使い始める際、最も混乱しやすいのが「何がどこに描画されているのか」という点です。Matplotlibのグラフは、単純な一枚の絵ではなく、階層化されたオブジェクトの集合体として構成されています [1]

階層構造の構成要素

グラフを構成する主要な要素を以下の表にまとめました [1]

構成要素名称(英語)役割と説明
フィギュアFigureグラフ全体を保持する「キャンバス」全体です。一つのフィギュア内に複数のグラフ(Axes)を配置することができます。
アキシスAxes実際にデータがプロットされる「領域」です。タイトル、x軸、y軸、凡例など、一つのグラフとしての最小単位を指します。
アクシスAxis数値のスケールや目盛り(Ticks)を管理する「軸」そのものです。x軸とy軸それぞれがAxisオブジェクトです。
アーティストArtistフィギュア上に表示されるすべての視覚要素(線、点、テキスト、目盛りなど)の総称です。

この構造を理解することは非常に重要です。例えば、タイトルを設定する場合、それが「フィギュア全体のタイトル」なのか「特定のアキシス(個別のグラフ)のタイトル」なのかを使い分ける必要があるからです [1]

開発環境の構築と2026年を見据えた日本語化対策

Matplotlibを使用するための環境構築は非常にシンプルです。Google Colaboratory(Google Colab)を利用する場合、既に標準でインストールされているため、準備作業はほとんど必要ありません [1]。ローカル環境で構築する場合は、以下のコマンドを実行します [1]

bash

pip install matplotlib

日本語文字化け問題の最新解決策

Matplotlibを日本語環境で使用する際、最大の障壁となるのが「豆腐(□)」と呼ばれる文字化け現象です。これは、デフォルトのフォントが日本語に対応していないために発生します [1]。2026年現在、従来広く使われていた japanize-matplotlib は2020年以降メンテナンスが止まっており、Python 3.12以降の環境で不安定になるケースが報告されています [1]。そこで、現在推奨される主な解決手法を比較検討します [1]

手法推奨パッケージ/設定特徴と2026年現在の評価
ライブラリ利用matplotlib-fontja最新のPython/Matplotlibに対応しており、最も簡便で確実な解決策です。
フォント直接指定rcParams の変更OSにインストールされているフォント(Yu GothicやMeiryoなど)を明示的に指定します。
個別設定FontProperties特定の文字列ごとにフォントパスを指定します。環境依存を避けたい場合に有効です。

実務における最もスマートな解決策は、matplotlib-fontja を導入することです。以下のコードを追加するだけで、すべてのグラフ要素で日本語が利用可能になります [1]

python

import matplotlib.pyplot as plt
import matplotlib_fontja

プログラミング・スタイルの選択:Pyplotとオブジェクト指向インターフェース

Matplotlibには、開発の歴史的経緯から二つの異なる記述スタイルが存在します [1]

Pyplotインターフェース(暗黙的スタイル)

matplotlib.pyplot モジュールの関数(plt.plot() など)を直接呼び出す形式です [1]。このスタイルは「現在のフィギュア」や「現在のアキシス」をMatplotlib側が自動的に追跡します。コードが短くなるため、Jupyter Notebookなどでの対話的なデータ分析や、単純なグラフを一枚だけ描画する場合には非常に便利です [1]

オブジェクト指向(OO)インターフェース(明示的スタイル)

フィギュアやアキシスのオブジェクトを明示的に生成し、それぞれのメソッドを呼び出す形式です [1]

python

fig, ax = plt.subplots()
ax.plot(x, y)

このスタイルは、どのオブジェクトに対して操作を行っているかが明確であるため、複数のグラフを複雑に配置する場合や、大規模なアプリケーションに組み込む場合に適しています [1]。現在のMatplotlib公式ドキュメントでは、コードの可読性と保守性の観点から、このオブジェクト指向スタイルが強く推奨されています [1]

基本的なグラフ描画:実践的なテクニックとパラメーター制御

データの性質に合わせて適切なグラフを選択することは、情報の伝達効率を最大化するために不可欠です。

折れ線グラフ:時系列変化の可視化

折れ線グラフは、時間の経過に伴う数値の変化(トレンド)を示すのに最も適しています。ax.plot() を使用して描画します [1]

マーカーと線種: データの観測点を強調するために marker='o' を指定したり、複数の系列を区別するために linestyle='--'(破線)や linestyle=':'(点線)を使い分けたりすることが可能です [1]

凡例(Legend): 複数の線を一つのグラフに描画する場合、label 引数を設定し、ax.legend() を呼び出すことで、どの色がどのデータを示しているかを示す凡例を表示できます [1]

棒グラフ:カテゴリー間の比較

特定のカテゴリー(都道府県別、月別など)ごとの数値を比較するには、垂直棒グラフの ax.bar() や水平棒グラフの ax.barh() が有効です [1]

グリッド線の活用: 数値の読み取りを容易にするため、ax.grid(axis='y') を使用して水平方向のグリッド線を入れることが一般的です [1]

積み上げ棒グラフ: 二つの要素(例:男性と女性の数)を合計して示したい場合、bottom パラメーターに下の要素の値を指定することで積み上げグラフが作成できます [1]。3つ以上の要素を積み上げる場合は、NumPyの ndarray を用いて計算を行うと、コードが簡潔になります [1]

円グラフ:構成比の表現

全体に対する各要素の割合を示すには ax.pie() を使用します。ただし、円グラフは項目の数が多すぎると視認性が低下するため、上位数項目以外を「その他」にまとめるなどの工夫が求められます [1]

強調表示(Explode): 特定の項目を円から切り出して強調したい場合、explode 引数にリストを与えます [1]

ドーナツグラフへの加工: wedgeprops パラメーターを使用して中央を白く抜くことで、情報を中央に配置できるモダンなドーナツグラフを作成できます [1]

散布図とヒストグラム:相関と分布の解析

二つの変数の関係性を探る散布図(ax.scatter())と、データのばらつきを示すヒストグラム(ax.hist())は、データ分析の初期段階で多用される非常に強力なツールです [1]

散布図の色と透明度: データの密度が高い場合、alpha=0.5 のように透明度を設定することで、重なり具合を可視化できます [1]

ヒストグラムのビン(Bins)設定: ビン(階級)の数によってグラフの形状は劇的に変化します。適切なビンの数を見つけることは、データの背後にある統計的特性を正しく理解するために重要です [1]

2025年以降のレイアウト設計:サブプロットとタイル配置

モダンなレポートでは、複数のグラフを関連付けて一枚の図にまとめることが一般的です。Matplotlibでは、plt.subplots() を用いたグリッド配置に加え、より自由度の高い配置手法が提供されています [1]

高度なレイアウトエンジン:constrained_layout

以前のMatplotlibでは、複数のサブプロットを作成すると軸ラベルやタイトルが重なってしまう問題がありました。これを解消するために plt.tight_layout() が使われてきましたが、最新版では constrained_layout=True をフィギュア作成時に指定することが推奨されています [1]。このエンジンは、カラーバーや凡例の位置も含めて、重なりが発生しないように空間を動的に最適化します [1]

自由自在なタイル配置:subplot_mosaic

特定のグラフを大きく、他のグラフを小さく配置したい場合、fig.subplot_mosaic() は非常に直感的な手段を提供します。文字列による視覚的なレイアウト指定が可能なため、複雑なダッシュボード形式の図表も容易に構築できます [1]

色彩理論とアクセシビリティ:Petroff10とカラーマップの選択

可視化において「色」は単なる装飾ではなく、情報の重要度や性質を伝えるための強力なシグナルです。Matplotlibでは、用途に応じて4つのカテゴリーのカラーマップが提供されています [1]

Sequential(順次): 値の大きさに応じて明度が変化します。viridis や plasma が代表例で、順序のあるデータの可視化に適しています [1]

Diverging(発散): 中央の基準値から正負に広がるデータに適しています。coolwarm や RdBu が使われます [1]

Qualitative(定性的): 順序のないカテゴリー(例:犬、猫、鳥)を区別するために、明度が近く色相が異なる色が選ばれます。tab10 や、2025年の新標準である petroff10 がこれに該当します [1]

Cyclic(環状): 時間や角度など、終点が始点につながるデータの可視化に使用されます [1]

特に petroff10 は、色覚障害を持つユーザーにも色の違いが判別しやすく、かつ美観的にも優れた設計になっており、現代のグローバルスタンダードに準拠した図表作成において不可欠な選択肢となっています [1]

レーダーチャートの構築:極座標プロットの応用

Matplotlibにはレーダーチャート専用のメソッドは存在しませんが、projection='polar' を指定した極座標系を利用することで作成できます [1]。レーダーチャート作成時の注意点を以下の表にまとめました [1]

ステップ操作内容理由と注意点
角度の計算$2\pi$ を項目数で割る各項目を円周上に均等に配置するためです。
閉路処理データの末尾に先頭データを追加線が最後の一点から最初の一点に戻り、多角形を閉じるようにするためです。
塗りつぶしax.fill() の使用面積としてデータを表現することで、複数データの比較が容易になります。
軸の範囲固定ax.set_ylim()比較するグラフ間でスケールを統一しないと、視覚的な誤解を招く恐れがあります。

レーダーチャートは多角的な評価(例:能力値、製品スペックの比較)に非常に有効ですが、項目の並び順によって形状が大きく変わるという特性があることを理解した上で使用する必要があります [1]

保存とエクスポート:出版品質を実現するためのベストプラクティス

作成したグラフをファイルとして保存する際、plt.savefig() のパラメーター設定一つで、図の品質は劇的に変化します [1]。出力先の媒体に合わせて、最適な設定を選択する必要があります [1]

PDF / SVG(ベクタ形式): 拡大しても画像が劣化しないため、学会論文や印刷物、拡大・縮小が必要なWebサイトに最適です [1]

PNG(ラスタ形式): ピクセルベースの画像です。プレゼンテーション資料やブログ記事など、標準的な用途に適しています。保存時には dpi=300 以上を指定することで、ぼやけのない鮮明な画像が得られます [1]

保存時の典型的なベストプラクティスは、以下のようなコードになります [1]

python

plt.savefig('report_figure.pdf', bbox_inches='tight', transparent=True)

bbox_inches='tight' を指定することで、Matplotlibはグラフの周囲の余分な余白を自動的に計算して取り除き、すべてのラベルが収まるようにファイルを書き出します [1]

エコシステムの拡張:PandasとSeabornによる効率化

Matplotlibは単体でも強力ですが、他のライブラリと組み合わせることでその真価を発揮します [1]

Pandasとの連携

データ解析ライブラリであるPandasの DataFrame は、内部的にMatplotlibを使用する plot() メソッドを持っています。これにより、データの抽出・加工から可視化までを流れるようなシームレスなコードで記述できます [1]

Seabornによる洗練された統計描画

Seaborn(シーボーン)はMatplotlibをベースに構築された、統計データの視覚化に特化したライブラリです [1]

洗練されたデフォルト設定: 少ないコードで、色彩学的に優れたデザインのグラフを作成できます [1]

高度な統計機能: 回帰直線の自動描画や、複雑なヒートマップ、分布の推定(KDE)などを容易に実行できます [1]

実務においては、Seabornで素早く全体像を確認し、細かなレイアウトやラベルの微調整をMatplotlibのオブジェクト指向メソッドで行うというアプローチが、最も効率的でバランスの取れた手法とされています [1]

結論

Matplotlibは、Pythonにおけるデータサイエンスの成長を支えてきた強固な基盤であり、現在もその重要性は揺らいでいません。最新のバージョン3.10系統では、Python 3.13への対応やアクセシビリティの向上など、時代の要請に応じた進化を続けています。これからMatplotlibを始める方にとって、最も大切なのは「一枚の図を完成させること」から「データが持つ意味を正しく、かつ美しく伝えること」へと意識を段階的に引き上げていくことです。本報告書で解説したオブジェクト指向スタイルの理解、最新の日本語化対策、そして適切なカラーマップの選択は、そのための確実な一歩となります。公式ドキュメントにある膨大なギャラリーを参考にしながら、まずは手を動かし、多様なプロットを試行錯誤することが、熟達への最短距離です。

参考資料

1. PythonのMatplotlib入門、これから始めようとする初心者向けに分かりやすく解説|Python入門(14)、https://yanai-ke.com/python_matplotlib/

2. Matplotlib 3.10.8 Quick Start Guide、https://matplotlib.org/stable/users/explain/quick_start.html

3. How to create a radar chart in Matplotlib for beginners、https://matplotlib.org/stable/gallery/specialty_plots/radar_chart.html

4. Matplotlib: Visualization with Python、https://matplotlib.org/

5. Introduction to pyplot、https://matplotlib.org/stable/tutorials/pyplot.html

6. Matplotlib API interfaces、https://matplotlib.org/stable/users/explain/figure/api_interfaces.html

7. Matplotlib and the Object-Oriented Interface、https://simulationbased.com/2020/07/05/matplotlib-and-the-object-oriented-interface/

8. Why use the object-oriented approach in Matplotlib?、https://stackoverflow.com/questions/69526995/why-use-the-object-oriented-approach-in-matplotlib-for-visualizing-data

9. What are the two styles of Matplotlib?、https://stackoverflow.com/questions/58222006/what-are-the-two-styles-of-matplotlib

10. Mastering Matplotlib: Pyplot vs Object-Oriented Interface、https://medium.com/@muaazmuzammil69/mastering-matplotlib-pyplot-vs-object-oriented-interface-1b0ab467b180

11. What's new in Matplotlib 3.10.0、https://matplotlib.org/stable/users/prev_whats_new/whats_new_3.10.0.html

12. What's New In Python 3.10、https://docs.python.org/3/whatsnew/3.10.html

13. Matplotlib API Changes 3.3.0、https://matplotlib.org/stable/api/prev_api_changes/api_changes_3.3.0.html

14. Matplotlib API Changes 3.1.0、https://matplotlib.org/stable/api/prev_api_changes/api_changes_3.1.0.html

15. matplotlibで日本語が豆腐になった時の対処法(2026年版)、https://qiita.com/gragra/items/8839ef2b9b5a8c06c82e

16. Python Matplotlib 日本語 文字化け 解決策の詳細、https://blog.bug-fix.org/blog/a4e987d175

17. Python Matplotlib 文字化け回避ガイド、https://zenn.dev/giana12th/articles/9e84a2647ac419

18. Matplotlibの日本語表示問題をFontPropertiesで解決する、https://programming-school.dream-target.jp/matplotlib_jp

19. プログラムで日本語フォントを指定する方法、https://note.com/ma251/n/ne4427d959395

20. subplots demo、https://matplotlib.org/stable/gallery/subplots_axes_and_figures/subplots_demo.html

21. Matplotlib Best Practices Skill、https://lobehub.com/bg/skills/mindrally-skills-matplotlib-best-practices

22. Multi-figure Layouts with Matplotlib、https://codesignal.com/learn/courses/customizing-and-styling-plots/lessons/multi-figure-layouts-with-matplotlib

23. Matplotlib Subplot in Python Tutorial、https://intellipaat.com/blog/matplotlib-subplot-in-python/

24. Polar plot demo、https://matplotlib.org/stable/gallery/pie_and_polar_charts/polar_demo.html

25. Matplotlib - Polar Charts、https://www.tutorialspoint.com/matplotlib/matplotlib_polar_charts.htm

26. Basic radar chart in Matplotlib、https://python-graph-gallery.com/390-basic-radar-chart/

27. Radar Charts in Python: How to Build Spider or Polar Plots、https://en.moonbooks.org/Articles/Radar-Charts-in-Python-How-to-Build-Spider-or-Polar-Plots-/

28. Data Visualization with Seaborn: A Beginner's Guide、https://dev.to/codeneuron/data-visualization-with-seaborn-a-beginners-guide-32p1

29. Implementing Data Visualization with Seaborn and Matplotlib、https://namastedev.com/blog/implementing-data-visualization-with-seaborn-and-matplotlib-in-python/

30. Visualizing Data in Python With Seaborn Tutorial、https://realpython.com/python-seaborn/

31. Visualizing Data with Seaborn: A Beginner to Expert Guide、https://www.udacity.com/blog/2025/05/visualizing-data-with-seaborn-in-python-a-beginner-to-expert-guide.html

32. What is Matplotlib in Python? How to use it for plotting、https://www.activestate.com/resources/quick-reads/what-is-matplotlib-in-python-how-to-use-it-for-plotting/

33. Introduction to Matplotlib、https://jakevdp.github.io/PythonDataScienceHandbook/04.00-introduction-to-matplotlib.html

34. Python Matplotlib Guide、https://realpython.com/python-matplotlib-guide/

35. Matplotlib Makeover: Python Styling Libraries、https://medium.com/@alexroz/matplotlib-makeover-6-python-styling-libraries-for-amazing-plots-5152f16992f5

36. Matplotlib Release News、https://matplotlib.org/

37. matplotlib-fontja PyPI Project、https://pypi.org/project/matplotlib-fontja/

38. Fonts in Matplotlib Documentation、https://matplotlib.org/stable/users/explain/text/fonts.html

39. matplotlib-fontja 1.0.0 FAQ、https://pypi.org/project/matplotlib-fontja/1.0.0/

40. matplotlib-fontja を使う方法と FontProperties 指定方法、https://qiita.com/yunose/items/e0d2af26f95cd8986f3c

41. matplotlibの日本語豆腐問題解決(2026年最新)、https://qiita.com/gragra/items/8839ef2b9b5a8c06c82e

42. matplotlib.pyplot.savefig API、https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html

43. Matplotlib savefig Cuts Off Labels? Fix It Fast、https://docs.kanaries.net/topics/Matplotlib/matplotlib-savefig-cuts-off-labels

44. savefig parameters documentation、https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.savefig.html

45. Export High-Res Figures from Matplotlib、https://plotivy.app/blog/export-high-res-figures-matplotlib

46. How to choose colors for data visualization、https://www.atlassian.com/data/charts/how-to-choose-colors-data-visualization

47. Choosing Colormaps in Matplotlib、https://matplotlib.org/stable/users/explain/colors/colormaps.html

48. Matplotlib Colormap Selection Principles、https://matplotlib.org/2.0.2/users/colormaps.html

49. How to Customize Matplotlib Colors for Better Plots、https://www.stratascratch.com/blog/how-to-customize-matplotlib-colors-for-better-plots

50. Matplotlib - Choosing Colormaps Tutorial、https://www.tutorialspoint.com/matplotlib/matplotlib_choosing_colormaps.htm

ーーーーーーーーーーーーーーーーーーーーー2022年11月1日執筆ーーーーーーーーーーーーーーーーー

はじめに

 前回のPython入門(13)では、数値計算などでは欠かせないPythonの外部ライブラリーの一つであるNumPyについて学びました。

 今回は、Python入門の第十四弾として、データの可視化ができる(グラフ化)PythonのMatplotlib入門について紹介します。

  この記事を読むと次の疑問について知ることができます。

 それでは、PythonのMatplotlib入門をこれから始めようとする初心者向けに分かりやすく解説していきます。

Matplotlibとは?

 Matplotlibは、Pythonで色々な計算をして得たデータを視覚的に分かり易いグラフ化ができる外部ライブラリになります。

 Matplotlibの読み方は「マットプロットリブ」です。 

 Matplotlibは、アメリカの神経生物学者であるJohn D. Hunterによりオリジナルが開発され、その後多くの方が携わって今のMatplotlibライブラリが作られており、バージョン1.0 は2010 年 7 月 6 日にリリースされています。

 Matplotlibは、Python3 に対応したのが、バージョン1.2.0からであり、公式サイトを見ると非常に多くのグラフの例を見ることができます

 Matplotlibの現在の最新バージョンは、3.5.3 であり、Google Colaboratory(以後、Google Colabと記述)でも既にインストールされており直ぐに利用することが可能です。

Matplotlibを使う準備

 通常、PythonでMatplotlibを利用するためにはPythonにMatplotlibの拡張モジュールをインストールする必要がありますが、Google Colabを利用する場合は、既にMatplotlibはインストールされています。

  Google Colab内にインストールされているMatplotlibのバージョンは 3.2.2になります。

 Google Colab内に既にインストールされているライブラリにどのようなものがあるかは。前回のNumPyの記事を見て下さい。

 Google Colab内に既にインストールされているMatplotlibライブラリ「matplotlib==3.2.2」があることが分かり、Matplotlibのバージョン3.2.2がインストールされていることが分かります。

 matplotlibのグラフ描画(matplotlib.pyplotモジュール)を利用するには、「使うための宣言、import文」をすればよいことになります。

import matplotlib.pyplot as plt

 上述の文の意味は、Matplotlibのグラフ描画モジュール(pyplot)を読み込み、使えるようにすると共に「matplotlib.pyplot」⇒「plt」として名前変更して利用しますよ』という宣言になります。

Matplotlibの基本的な使い方

 Matplotlibは色々なグラフを描けますが、ここでは折れ線グラフ、棒グラフ、円グラフ、散布図、ヒストグラフ、応用としてレーダーチャートなどの書き方などを紹介します。

Matplotlibで日本語を使えるようにする準備

 普通にMatplotlibを使うと日本語は文字化けしてしまい、上手く日本語が表示されません。

 日本語化する方法には色々ありますが、ここでは「japanize-matplotlib」の日本語化モジュールを利用する方法を紹介します。

 Google Colabには「japanize-matplotlib」の日本語化モジュールはインストールされていませんので、先ず、インストールする必要があります。

 次のようにGoogle Colabに打ち込んでください。

!pip install japanize-matplotlib

折れ線グラフ

 折れ線グラフは、matplotlib.pyplotのplot()メソッドを使います。

 ここでは、簡単な例として前に利用した各都市でのある日のコロナ感染者数をリスト形式で指定してやり、プロットしてみます。

 これらをGoogle Colabで実施した例を以下に示します。

 ここには、japanize-matplotlibの日本語化モジュールのインストールやインストールした日本語を利用できるようにする文なども含まれています。

 このフラフを見ると、x軸の値が0,1,2・・となっています。

 これは、x軸に相当するデータを与えなかったからであり、x軸のデータをリスト形式で指定、さらに、タイトル(plt.title)、x軸ラベル(plt.xlabel)、y軸ラベル(plt.ylabel)も入れたグラフが次のグラフです。

 次に各都道府県のコロナ感染者数の部分にマーカーを入れて描画してみましょう。

 マーカーは多数あり、ここではよく利用する●(marker=’o’)を使って折れ線グラフを描いてみます。

 その他にどのようなマーカーがあるかは次の記事を参照ください。

 次は、1つのグラフに3個の折れ線グラフ(線種も変更)を描き、凡例も入れてみます。

 また、タイトル(フォントサイズ18)、x軸ラベル、y軸ラベル(フォントサイズ14)のフォントサイズも少し大きくして見ました。

 ここで、線種については次を参照ください。

線種記号線種記号
実践’-’破線’--’
一点斜線’-.’点線’:’

棒グラフ

 棒グラフは、matplotlib.pyplotのbar()(縦棒グラフ)やbarh()(横棒グラフ)メソッドを使います。

 例として、折れ線グラフと同様に代表的な都市のコロナ感染者数を棒グラフにしてみます。

 ここで、コロナ感染者数が分かり易いように縦棒グラフにはy軸にグリッド線を、横棒グラフにはx軸にグリッド線を入れてみました。

 次に積み上げ棒グラフを作成して見ます、縦棒グラフの場合はbottomに、横棒グラフの場合はleftにそれぞれのYの値を足してやります。

 これをするには、2つの積み上げ棒グラフまでは通常のPythonのリスト形式で指定してやればよいのですが、3つ以上の積み上げ棒グラフを作成する場合は(Pythonのリスト形式で指定してやるとエラーとなるため)、NumPyのndarray形式で指定して、積み上げするyの値を関数「array」で指定する必要があります。

 次に棒グラフは、凡例(ここでは3種類日にち)の棒グラフをそれぞれ分けてグラフにしてみましょう。

 棒グラフは、棒の幅はデフォルトでは0.8となっていますので、ここでは0.2の棒の幅とし、都道府県のラベルを入れるのにxticks(縦棒グラフ)、yticks(横棒グラフ)を利用します。

 また、棒グラフの棒の幅を指定するのに、縦棒グラフの場合は「width」、横棒グラフの場合は「height」を用います。

円グラフ

 円グラフは、matplotlib.pyplotのpie()メソッドを使います。

 例として、家計費の内訳を円グラフで描いてみましょう。

 家計費の内訳は、「老後の生活費はいくら必要?内訳や実態を徹底調査|準備方法も紹介」記事から引用させていただきました。

 夫婦2人世帯の実際の生活費の内訳は次の通りです。

費用項目毎月の平均支出額
食料6万6,458円
住居1万3,625円
光熱・水道1万9,983円
家具・家事用品1万100円
被服及び履物6,065円
保健医療1万5,759円
交通・通信
2万8,328円
教養・娯楽2万4,804 円
その他消費支出(諸雑費や交際費など)5万4,806円
合計23万9927円

それでは、早速これを円グラフで表示してみましょう。

 ここで、「pie」に用いた引数やその他の主要な引数の意味は次の通り。

x(必須)円グラフのデータでリスト形式やNumPyのndarrayなどで配列としてデータを指定、ここでは、「kakeihi」として指定。
labels円グラフの各要素のラベル。ここでは、「koumoku 」として指定。(デフォルト値: None)
explode円グラフの特定部分を切り出すためのパラメータで、円周上を1として、どの項目をどれだけ切り離して表示するかをリスト形式で指定
colors円グラフの各要素の色を指定。 (デフォルト値: None)
autopct円グラフの構成割合をパーセンテージで表示。 (デフォルト値: None)
pctdistanceautopctを指定した際のパーセンテージを出力する位置。円の中心 (0.0) から円周 (1.0) を目安に指定。 (デフォルト値: 0.6)
shadow円グラフの影をTrue に設定すると表示。 (デフォルト値: False)
labeldistanceラベルを表示する位置。円の中心 (0.0) から円周 (1.0) を目安に指定。 (デフォルト値: 1.1)
startangle円グラフの各要素の出力を開始する角度。 (デフォルト値: 時計の3時の位置)
radius円グラフの円の半径。 (デフォルト値: 1)
counterclockTrue に設定すると反時計回りで出力。False に設定すると時計回りで出力。 (デフォルト値: True)
wedgepropsドーナツグラフを作成時に利用。 (デフォルト値: None)
textpropsテキストに関するプロパティ。 (デフォルト値: None)

  次に、円グラフが小さいので半径を2倍とし、それぞれの組成の百分率を入れ、これらラベルのフォントサイズを12とし、タイトルにフォントサイズ18で「夫婦2人世帯の生活費の内訳」と入れて見ます。

 ここで、タイトルの引数で「pad」は、グラフとタイトルの距離を指定するパラメーターで、円グラフの半径が「1」(デフォルト値)ならば、padパラメーターを指定しなくとも丁度良い位置に配置してくれますが、この円グラフは半径を「2」としているために、padパラメータを「80」と指定して円グラフの上にくるようにしています。

 それから、内訳の%表示の指定の仕方は次の表を参照ください。

%の書式の指定の仕方表示内容表示例
"%.d"小数点なしの整数のみ5
"%.d%%"小数点なしの整数 + % 5%
”%0.1f”小数点1桁5.2
”%0.1f%%”小数点1桁 + %5.2%
"%0.2f%%"少数点2桁 + %5.23%

 次に、「保険医療」の部分を切り出して表示してみましょう。

 円グラフの最後は、ドーナツグラフを作成し、ドーナツグラフの中心にタイトルを入れてみました。

散布図

 散布図は、matplotlib.pyplotのscatter()メソッドを使います。

 scatter()の主要な引数には次のようなものがあります。

x, yグラフに出力するデータ
sマーカーサイズ (デフォルト値: 20)
cマーカーの色、または、連続した色の値
markerマーカーの形 (デフォルト値: ‘o’= 円)、折れ線グラフを参照
cmapカラーマップでc が float 型の場合のみ利用可能
alpha透明度で、0(透明)~1(不透明)の間の数値を指定
linewidths線の太さ
edgecolors線の色

 ここでは、散布図の例として身長と体重の関係をグラフにしてみたいと思います。

 身長と体重の関係は、次の記事を参照させていただきました。

 また、身長と体重の関係のデータ(csv)を読み込み、PandasのDataFrameを利用してグラフを作成して見ます。なお、Pandasの詳細については次回以降に紹介したいと思います。

 Google Colabで身長と体重の関係のデータ(csv)を利用するためには、Google Colabの左メニューの「ファイル」⇒「アップロード」と順にクリックして、作成した身長と体重の関係のデータ(csv)を指定して読み込みます。

 読み込んだ身長と体重のデータのトップ5行目までを表示すると次のようになります。

 そして、このデータを用いて散布図を描いたのが次のグラフです。

 このグラフにはタイトル(18ポイント)、X,Y軸のラベル(14ポイント)、x,yグリッド、凡例も入れています。

ヒストグラム

 ヒストグラムは、matplotlib.pyplotのhist()メソッドを使います。

 hist()の主要な引数には次のようなものがあります。(次の記事から引用)

x (必要)ヒストグラムを作成するためのデータの配列。
binsビン (表示する棒) の数、階級数。(デフォルト値: 10)
rangeビンの最小値と最大値を指定。(デフォルト値: (x.min(), x.max()で指定))
normedTrue に設定すると正規化 (合計値が 1 になるように変換) を実施。 (デフォルト値: False)
cumulativeTrue に設定すると、累積ヒストグラムを出力。 (デフォルト値: False)
bottom各棒の下側の余白を数値または配列で指定。
histtype‘bar’ (通常のヒストグラム), ‘barstacked’ (積み上げヒストグラム), ‘step’ (線), ‘stepfilled ‘ (塗りつぶしありの線) から選択。 (デフォルト値: ‘bar’)
align各棒の中心を X 軸目盛上のどの横位置で出力するかの指標。 ‘left’, ‘mid’, ‘right’ から選択。(デフォルト値: ‘mid’)
orientation棒の方向。’horizontal’ (水平方向), ‘vertical’ (垂直方向) から選択。(デフォルト値: ‘vertical’)
rwidth各棒の幅を数値または、配列で指定。
logTrue に設定すると、縦軸を対数目盛で表示。
colorヒストグラムの色。配列で指定し、データセット単位で色を指定することが可能。
label凡例を載せる際に使用。
stackedTrue に設定すると積み上げヒストグラムで出力します。False に設定すると、横に並べて出力します。

 ヒストグラムの例として、NumPyで正規分布の乱数を2つ発生させ、それらをデータとして与え、ヒストグラムを描いてみます。

 このグラフにはタイトル(18ポイント)、X,Y軸のラベル(14ポイント)、凡例も入れています。

レーダーチャート

 Matplotlibには、レーダーチャートのメソッドはありません。

 そこで、色々記事を調べたら次の記事にMatplotlibでレーダーチャートを作成する方法が載っていましたので、これを参考にして、ある日の食べた食事の栄養素('エネルギー', 'たんぱく質', '脂質', '炭水化物', 'ナトリウム', 'カルシウム', '鉄', 'ビタミンA', 'ビタミンB1', 'ビタミンC')が食事摂取基準に対してどの程度の割合(各栄養素が100が摂取基準で、100より少なければ摂取基準値より少なく、100より多ければ摂取基準値より多い)で満たしているかを表示するレーダーチャートを作成してみました。

 プログラムは結構長くなりますが、説明を付けてあるので分かると思います。なお、プログラムには、matplotlib.pyplot、numpyなどのimport文やjapanize-matplotlibの日本語化モジュールのインストール、import文は除いていますので、Google Colabで前に実施した上述の文を実行してからレーダーチャートのプログラムを実行するようにして下さい。

 Matplotlib.pyplot.plotメソッドで極座標を使って描いています。

おわりに

 如何だったでしょうか?

 Matplotlibとは?、Matplotlibを使う準備、Matplotlibの基本的な使い方、Matplotlibで日本語を使えるようにする準備、折れ線グラフ、棒グラフ、円グラフ、散布図、ヒストグラム、レーダーチャートなどについて解説してきました。

 この記事を読みながらPythonのグラフ化ライブラリーのMatplotlibを学んでもらえればと思います。

 次をお楽しみに?

以上です。

 

コメント

タイトルとURLをコピーしました