桜チャート(Sakura Chart)

CSV を貼り付けるだけで、統計グラフを自動生成できる無料ウェブツール

Matplotlib入門|Pythonでグラフを作る基本

Matplotlib(マットプロットリブ)は、Pythonでグラフを作成するための代表的なライブラリです。 折れ線グラフや棒グラフはもちろん、散布図、ヒストグラム、箱ひげ図などもコードから作成できます。

この記事では、初めて使う人が「インストールして、グラフを描き、見た目を整え、画像として保存する」ところまで進めるように、 基本的な流れを一つずつ解説します。最後に、Excelやノーコードの桜チャートとの使い分けも整理します。

目次

  1. Matplotlibとは
  2. インストール
  3. 最初の折れ線グラフ
  4. FigureとAxes
  5. 代表的なグラフ
  6. CSV・Excelデータを使う
  7. 見た目を整える
  8. 画像として保存する
  9. 日本語が文字化けするとき
  10. よくあるつまずき
  11. Excel・桜チャートとの使い分け

1. Matplotlibとは

Matplotlibは、数値や表データをグラフとして可視化するPythonライブラリです。 NumPyやpandasと組み合わせて使われることが多く、データ分析、研究、製造データの確認、レポート画像の自動作成などに利用できます。

  • 同じ形式のグラフを、データを変えながら繰り返し作れる
  • 色、線、軸、凡例、注釈などを細かく設定できる
  • PNG、SVG、PDFなどの形式で保存できる
  • 複数のグラフを1枚のFigureに配置できる

細かい設定ができる反面、Excelのように画面上で直接操作するのではなく、基本的にはPythonコードを書いてグラフを作ります。

2. Matplotlibをインストールする

Pythonをインストール済みであれば、ターミナルまたはコマンドプロンプトで次を実行します。

Terminal / Command Prompt
python -m pip install matplotlib

Anaconda環境では、次の方法でもインストールできます。

Anaconda
conda install matplotlib

インストール後は、Pythonコードの先頭で通常このように読み込みます。

Python
import matplotlib.pyplot as plt
ポイント: pyplotには、グラフの作成・表示・保存に使う関数がまとめられています。 一般的な省略名はpltです。

3. まずは折れ線グラフを作る

次のコードだけで、月ごとの売上を表す折れ線グラフを作成できます。

最小構成の折れ線グラフ
import matplotlib.pyplot as plt

month = [1, 2, 3, 4, 5]
sales = [120, 150, 135, 180, 210]

fig, ax = plt.subplots()
ax.plot(month, sales, marker="o")
ax.set_xlabel("Month")
ax.set_ylabel("Sales")
ax.set_title("Monthly Sales")

plt.show()

ax.plot()が折れ線を描き、set_xlabel()set_title()が軸ラベルとタイトルを設定します。 最後のplt.show()でグラフを表示します。

4. FigureとAxesを理解する

Matplotlibを使うときは、まず次の2つを押さえるとコードが読みやすくなります。

名前役割イメージ
Figure 画像全体を管理する入れ物 用紙・キャンバス全体
Axes 実際にデータを描画する領域 座標軸を持つ一つのグラフ
FigureとAxesを作る
fig, ax = plt.subplots(figsize=(7, 4))

figがFigure、axがAxesです。 複数のグラフを並べるときは、plt.subplots(2, 2)のように行数と列数を指定できます。

おすすめ: 短い試作ではplt.plot()のような書き方も便利ですが、再利用するコードや複数グラフでは、 fig, ax = plt.subplots()から始める書き方が管理しやすくなります。

5. 代表的なグラフとメソッド

見たいことグラフ主なメソッド
時間に沿った変化折れ線グラフax.plot(x, y)
カテゴリ間の比較棒グラフax.bar(x, height)
2変数の関係散布図ax.scatter(x, y)
値の分布ヒストグラムax.hist(data)
中央値・ばらつき・外れ値箱ひげ図ax.boxplot(data)
全体に占める割合円グラフax.pie(values)
4種類のグラフを1枚に配置する例
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.array([12, 19, 15, 24, 28])
group_a = np.array([11, 13, 12, 16, 15, 18])
group_b = np.array([8, 10, 9, 11, 12, 13])

fig, axes = plt.subplots(2, 2, figsize=(10, 6), layout="constrained")

axes[0, 0].plot(x, y, marker="o", color="#be3455")
axes[0, 0].set_title("Line")

axes[0, 1].bar(x, y, color="#e78aa0")
axes[0, 1].set_title("Bar")

axes[1, 0].scatter(x, y, color="#2563eb", s=55)
axes[1, 0].set_title("Scatter")

axes[1, 1].boxplot(
    [group_a, group_b],
    tick_labels=["A", "B"],
    patch_artist=True,
    boxprops={"facecolor": "#f8d7df", "edgecolor": "#9f1239"},
    medianprops={"color": "#9f1239", "linewidth": 2}
)
axes[1, 1].set_title("Box plot")

for ax in axes.flat:
    ax.grid(axis="y", linestyle="--", alpha=0.25)
    ax.spines[["top", "right"]].set_visible(False)

fig.savefig("matplotlib_basics_example.png", dpi=150)
plt.show()
Matplotlibで作成した折れ線グラフ、棒グラフ、散布図、箱ひげ図の例
同じFigureに、折れ線・棒・散布図・箱ひげ図を配置した例

6. CSV・Excelの表データからグラフを作る

実務では、Pythonのリストを直接書くよりも、CSVやExcelファイルをpandasで読み込んでからMatplotlibへ渡す方法がよく使われます。

CSVを読み込んで折れ線グラフを作る
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("sales.csv")

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(df["month"], df["sales"], marker="o")
ax.set_xlabel("Month")
ax.set_ylabel("Sales")
ax.set_title("Monthly Sales")

fig.savefig("sales.png", dpi=150, bbox_inches="tight")
plt.show()

Excelファイルの場合は、pd.read_excel("sales.xlsx")で読み込めます。

pandasとExcel読込用ライブラリのインストール
python -m pip install pandas openpyxl
列名に余分な空白がある、数値列に文字が混ざっている、日付順に並んでいない、といった状態はグラフの崩れにつながります。 描画前にdf.head()df.dtypesでデータを確認すると原因を見つけやすくなります。

7. タイトル・色・凡例・グリッドを整える

よく使う設定をまとめると、次のようになります。

見た目を調整する基本例
fig, ax = plt.subplots(figsize=(8, 4.5))

ax.plot(
    month,
    sales,
    color="#be3455",
    linewidth=2,
    marker="o",
    label="Sales"
)
ax.set_title("Monthly Sales", fontsize=16)
ax.set_xlabel("Month")
ax.set_ylabel("Sales")
ax.set_ylim(0, 250)
ax.grid(axis="y", linestyle="--", alpha=0.35)
ax.legend()

fig.tight_layout()
設定したいもの代表的な書き方
図の大きさplt.subplots(figsize=(8, 4.5))
color="#be3455"
線の太さlinewidth=2
点の形marker="o"
軸の範囲ax.set_ylim(0, 250)
グリッドax.grid(axis="y", alpha=0.35)
凡例ax.legend()

複数のグラフで同じデザインを使いたい場合は、スタイルシートやrcParamsで共通設定をまとめることもできます。

8. グラフをPNG・SVG・PDFで保存する

fig.savefig()を使うと、作成したグラフをファイルとして保存できます。

画像保存
fig.savefig("chart.png", dpi=300, bbox_inches="tight")
fig.savefig("chart.svg", bbox_inches="tight")
fig.savefig("chart.pdf", bbox_inches="tight")
  • PNG:Webページ、メール、一般的な資料に使いやすい
  • SVG:拡大しても劣化しにくく、Webや編集用途に向く
  • PDF:印刷や論文、レポートへの組み込みに向く

dpiは画像の解像度、bbox_inches="tight"はラベル周辺の余分な余白や切れを調整する指定です。 保存はplt.show()より前に行うと、実行環境による空画像のトラブルを避けやすくなります。

9. 日本語が□や文字化けになるとき

日本語フォントが環境に入っていない、またはMatplotlibがそのフォントを選択できていないと、 タイトルや軸ラベルが四角形で表示されることがあります。

利用できる日本語フォント名を指定する例
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "Noto Sans CJK JP"
plt.rcParams["axes.unicode_minus"] = False
注意: 指定するフォント名はPCやサーバーによって異なります。 Windowsでは「Yu Gothic」、macOSでは「Hiragino Sans」、Linuxでは「Noto Sans CJK JP」などが候補ですが、 実際にインストールされているフォントを確認してください。

10. よくあるつまずきと対処法

症状確認すること
グラフが表示されない plt.show()を書いたか、実行環境のバックエンドが利用できるか確認する
ラベルが重なる・切れる layout="constrained"fig.tight_layout()、保存時のbbox_inches="tight"を試す
折れ線が前後に飛ぶ X軸の値、とくに日付が正しい順番に並んでいるか確認する
数値なのに描画がおかしい CSV読込後の列が文字列型になっていないかdf.dtypesで確認する
日本語が四角になる 日本語フォントをインストールし、font.familyで正しいフォント名を指定する
大量作成でメモリが増える 保存後にplt.close(fig)でFigureを閉じる

11. Matplotlib・Excel・桜チャートの使い分け

どの方法が最適かは、作業の目的とコードを書くかどうかで変わります。

ツール向いていること注意点
Matplotlib 定型処理の自動化、細かなデザイン調整、大量のグラフ作成、Python分析との連携 Pythonコードと実行環境が必要
Excel セル上での集計・修正、数式、ピボット、画面を見ながらの細かな編集 同じ設定の繰り返し作業では手数が増えやすい
桜チャート Excelの表を貼り付け、列や色を選び、コードなしで標準的なグラフをすばやく作る Matplotlibほど自由なコード単位のカスタマイズはできない

Matplotlibは、自動化や再現性を重視する人に強い選択肢です。 一方、「まず手元の表をすぐグラフにしたい」「Python環境を用意せず試したい」という場合は、 Excelと同じように表を起点として操作できるWebツールが手軽です。

コードを書かずにグラフを作るなら

桜チャートでは、Excelやスプレッドシートの表をコピーして貼り付け、グラフの種類・列・色を選ぶだけで描画できます。 棒グラフ、折れ線、散布図、箱ひげ図、円グラフに対応しています。

桜チャートを無料で試す

12. まとめ

  • Matplotlibは、Pythonから多様なグラフを作成できるライブラリ
  • fig, ax = plt.subplots()でFigureとAxesを作ると管理しやすい
  • plotbarscatterhistboxplotなどを目的に応じて使い分ける
  • savefigでPNG・SVG・PDFとして保存できる
  • 自動化と自由度ならMatplotlib、表から手軽に作るならExcelや桜チャートが向いている

次は手元の小さなデータを使い、折れ線グラフを1枚作るところから試してみてください。

公式リファレンス