はじめに
Pythonで折れ線グラフを作るなら、標準的な選択肢はmatplotlibです。時系列の売上、気温、アクセス数、学習ログなど、順序を持つ値の変化を線で追えるため、データビジュアライゼーションの入口として扱いやすいテーマになります。
そのため、初心者はpipで環境を整え、plt.plot()で線を描き、plt.show()で表示する流れから押さえると理解しやすくなります。Pythonのコーディングでは、配列の長さ、ラベル、凡例、軸の範囲を順に確認すると、折れ線グラフの読みやすさが安定するのが基本です。
公式情報としては、Python自体の仕様はPython公式ドキュメント、グラフ描画APIはmatplotlib.pyplot.plot公式ドキュメントを参照できます。あわせて、Python入門の周辺知識はPython初心者のための完全ガイド!アプリ化の10ステップも確認材料になります。
- Python 3.12
- matplotlib 3.9 / NumPy 2.0
- 実行環境: Windows、macOS、Linux の一般的なターミナルまたはJupyter系環境
- Pythonとmatplotlibで折れ線グラフを描く基本構造
- 複数系列、凡例、タイトル、軸ラベルを加えるコーディング手順
- グリッド、エラーバー、サブプロット、対数軸、3D表示の使い分け
- 初心者が遭遇しやすいエラーの原因と修正方針
- データビジュアライゼーションで読みやすさを保つ調整方法
| 目的 | 主なAPI | 確認点 | 関連する注意 |
|---|---|---|---|
| 単一系列の描画 | plt.plot() | xとyの長さ | 長さ不一致でValueErrorになります |
| 複数系列の比較 | label、plt.legend() | 系列名の明確さ | 凡例がないと線の意味が伝わりにくくなります |
| 線の装飾 | color、linestyle、linewidth | 色と線種の差 | 色だけに頼らず線種も変えると読みやすくなります |
| 数値の読み取り | plt.grid() | 目盛りとの対応 | 濃すぎるグリッドは線を邪魔します |
| タイトル追加 | plt.title() | 何のグラフか | 長すぎるタイトルは避けます |
| 軸ラベル追加 | plt.xlabel()、plt.ylabel() | 単位と意味 | ラベル不足は誤読につながります |
| 不確実性の表示 | plt.errorbar() | yerrの値 | 誤差の根拠を別途整理します |
| 複数面の表示 | plt.subplot() | 行数と列数 | plt.tight_layout()で重なりを抑えます |
| 広い範囲の値 | plt.xscale('log') | 0以下の値の有無 | 対数軸では0や負数を扱えません |
| 3D表示 | projection='3d' | 軸の意味 | 2Dで足りる場合は2Dのほうが伝わります |
Pythonとは
Pythonは、読みやすい構文と豊富なライブラリを備えたプログラミング言語です。一般に、データ分析、機械学習、Web開発、業務自動化などで使われ、初心者がコーディングを学ぶ入口にも選ばれます。
これらの用途でPythonが扱いやすい理由は、list、dict、for、ifなどの構文が比較的読み取りやすく、外部ライブラリをimportして機能を追加できる点にあります。折れ線グラフを描く場面では、数値列を作るnumpyと、描画を担うmatplotlibを組み合わせる構成が一般的になるのが目安です。
そのため、Pythonの基礎だけでなく、pip install、import matplotlib.pyplot as plt、import numpy as npの意味も同時に理解すると、折れ線グラフのコードが読みやすくなります。表データを扱う予定がある場合は、初心者必見!Pythonで表を操作するための7つの詳細ガイドで表操作の考え方も補えます。
折れ線グラフとは
折れ線グラフは、順序を持つデータ点を線で結び、値の変化を視覚的に表すグラフです。時間、日付、回数、距離のように横方向へ進む軸があるデータでは、増加、減少、横ばい、周期性を読み取りやすくなるのがポイントです。
一方、カテゴリごとの大小比較だけなら棒グラフのほうが合う場合もあります。折れ線グラフは変化の流れを見る図なので、Pythonでデータビジュアライゼーションを行うときは、横軸に順序性があるかを確認してから選ぶと判断しやすくなります。
具体的には、月別売上、日別アクセス数、気温の推移、学習時間の記録などが折れ線グラフに向きますし、ここがポイントです。複数の系列を重ねれば比較もできますが、線が多すぎると読み取りにくくなるため、label、legend、color、linestyleで意味を整理する必要があります。
💡 Tips: 折れ線グラフは、点そのものよりも点同士のつながりを読ませる図です。横軸の順序が意味を持たないデータでは、散布図や棒グラフも候補に入れると判断しやすくなります。
Pythonで折れ線グラフを作る前に準備するもの
Pythonで折れ線グラフを作る前に、処理系、パッケージ管理、描画ライブラリをそろえますが、これは押さえたい点です。基本構成はPython、pip、matplotlib、numpyで、Jupyter Notebookを使う場合でも最初の考え方は同じです。
その準備で初心者がつまずきやすいのは、複数のPython環境が混在している状態です。python --version、python -m pip --version、pip listを確認すると、どの環境にライブラリが入ったかを追いやすくなります。
結果: 期待される出力は、matplotlibとnumpyの取得、インストール、または既にインストール済みである旨のメッセージです。
このコマンドは、ターミナルで実行するインストール操作です。環境によってはpip3やpython -m pip install matplotlib numpyを使うほうが確実な場合もあり、仮想環境では有効化してから実行します。
ただし、会社や学校の管理端末では、パッケージ追加に権限が必要な場合があります。その場合は管理されたPython環境、仮想環境、またはクラウドノートブックを使うと、コーディングの練習を進めやすくなるのが一般的です。
Pythonで折れ線グラフを作るための基本的なコード構造
Pythonで折れ線グラフを描く最小構成は、ライブラリの読み込み、データ生成、描画、表示の順に並びます。plt.plot(x, y)へ横軸と縦軸のデータを渡し、plt.show()で画面に表示する流れを押さえると、後のカスタマイズも読み替えやすくなります。
結果: 期待される表示は、0から10までの範囲でsinの波形を線で結んだ折れ線グラフです。
このコードでは、np.arange()で横軸の値を作り、np.sin()で縦軸の値を計算しています。その値をplt.plot()へ渡すため、Pythonの配列処理とmatplotlibの描画処理が分かれていると理解できます。
基本的に、折れ線グラフのコーディングではxとyの個数をそろえる必要があるのが現実的です。個数がずれると描画前にエラーになるため、len(x)とlen(y)で確認する習慣が役立ちます。
折れ線グラフ作成のサンプルコード1:シンプルな折れ線グラフ
最小の例では、等間隔の数列を作り、対応する関数値を線で描きます。Pythonとmatplotlibの関係を理解するには、np.linspace()、np.sin()、plt.plot()だけに絞ると見通しがよくなると整理できます。
結果: 期待される表示は、0から10までのxに対応するsin曲線の折れ線グラフです。
この例では、np.linspace(0, 10, 100)が0から10までを100個に分けた値を生成します。その各値にnp.sin()を適用し、横軸と縦軸を同じ長さに保って描画しています。
ただし、このままではタイトルや軸ラベルがないため、グラフ単体を見た人には意味が伝わりにくくなると理解できます。データビジュアライゼーションでは、線を描くだけでなく、何を表す線なのかを添える作業まで含めて考えます。
折れ線グラフ作成のサンプルコード2:複数のデータを描画する
複数の値の変化を比較したい場合は、同じxに対して複数のyを用意します。このときlabelを付けてplt.legend()を呼ぶと、線の意味を凡例として表示できると覚えるとよいでしょう。
結果: 期待される表示は、sinとcosの2本の線が同じグラフ上に描かれ、凡例で区別できる図です。
このコードでは、plt.plot()を2回呼び出して系列を重ねています。そのため、同じ横軸で異なる値の動きを比較でき、折れ線グラフの比較用途が分かりやすくなります。
一方、線が増えるほど読み取りは難しくなると考えられます。初心者のコーディングでは、まず2系列までで凡例の表示を確認し、必要に応じて色や線種を変えるのが扱いやすい進め方になります。
折れ線グラフ作成のサンプルコード3:グラフのスタイルを変更する
線の見た目は、グラフの読み取りやすさに直結します。colorで色、linestyleで線種、linewidthで太さを変えると、複数系列の違いが視覚的に追いやすくなると言えるでしょう。
結果: 期待される表示は、sinが青い破線、cosが赤い点線として描かれた折れ線グラフです。
この例では、blue、red、--、:のような値で見た目を変えています。色の違いだけでは判別しにくい場合もあるため、線種も組み合わせると読み手に伝わりやすくなります。
具体的には、印刷物や白黒表示の資料では、色よりもlinestyleの差が効く場面があるのが基本です。データビジュアライゼーションでは、見た目の装飾よりも、値の違いを誤読させない設計が優先されます。
折れ線グラフ作成のサンプルコード4:グラフにグリッドを追加する
グリッドは、線がどの数値付近にあるかを読み取る補助になります。matplotlibではplt.grid(True)を加えるだけで、標準的な格子線を表示できるのが目安です。
結果: 期待される表示は、sinとcosの線にグリッドが重なり、値の位置を追いやすいグラフです。
このとき、グリッドは主役ではなく補助線です。plt.grid(color='gray', linestyle='--', linewidth=0.5)のように淡い色と細い線を使うと、折れ線グラフの線を邪魔しにくくなります。
ただし、細かな値を読む必要がない図では、グリッドが視覚的な雑音になる場合もあります。用途が説明資料なのか分析画面なのかで、表示の有無を切り替えると扱いやすくなるのがポイントです。
折れ線グラフ作成のサンプルコード5:凡例とタイトルを追加する
凡例とタイトルは、グラフの読み手が線の意味を把握するための情報です。Pythonで作成した図を資料やレポートに使う場合、plt.title()とplt.legend()を適切に入れると説明の負担が減ります。
結果: 期待される表示は、上部にSin and Cos Functionsというタイトルがあり、sinとcosの凡例が付いたグラフです。
このコードでは、各plt.plot()のlabelが凡例に使われます。そのため、plt.legend()を呼ばないと、ラベルを付けても画面上には表示されません。
実際の分析では、タイトルに対象、期間、単位の一部を含めると読み取りやすくなります。ただし長い文章をタイトルに入れると図が窮屈になるため、詳細は本文やキャプションへ分けると整理できるのが一般的です。
折れ線グラフ作成のサンプルコード6:x軸とy軸のラベルを追加する
軸ラベルは、横軸と縦軸が何を表すかを示します。plt.xlabel()とplt.ylabel()を使うと、単位や値の意味をグラフ内に残せます。
結果: 期待される表示は、タイトル、x軸ラベル、y軸ラベルを備えたsinの折れ線グラフです。
この例では、横軸がx (radians)、縦軸がy (value)として表示されます。単位があるデータなら、temperature (C)やsales (JPY)のようにラベルへ含めると誤読を防げます。
初心者が折れ線グラフを作るときは、線の描画だけで満足してラベルを忘れがちです。後から見返すグラフほど、title、xlabel、ylabelを残す価値が高くなるのが現実的です。
折れ線グラフ作成のサンプルコード7:エラーバーを追加する
測定値や推定値には、ばらつきや不確かさが含まれることがあります。その幅を折れ線グラフ上で示すには、plt.errorbar()とyerrを使います。
結果: 期待される表示は、各データ点に縦方向のエラーバーが付いたsinの折れ線グラフです。
このコードでは、np.random.uniform()で0.1から0.3までの誤差幅を作り、yerrに渡しています。乱数を使うため、表示されるエラーバーの長さは実行ごとに変わる可能性があります。
ただし、実データでエラーバーを使う場合は、標準偏差、標準誤差、信頼区間など、何を表す幅なのかを明記すると整理できます。データビジュアライゼーションでは、見た目だけでなく、値の意味が読み手に伝わることが必要になります。
折れ線グラフ作成のサンプルコード8:サブプロットを使用する
複数のグラフを分けて並べたい場合は、サブプロットを使います。plt.subplot()で描画領域を切り替えると、同じ図の中に別々の折れ線グラフを配置できると理解できます。
結果: 期待される表示は、上段にsin、下段にcosの折れ線グラフが並んだ図です。
この例では、plt.subplot(2, 1, 1)で2行1列の上段、plt.subplot(2, 1, 2)で下段を選んでいます。plt.tight_layout()はタイトルや軸ラベルの重なりを抑えるために加えています。
一方、近年のmatplotlibでは、より明示的に扱えるplt.subplots()を使う書き方もよく使われますし、これが一つの目安です。学習初期はsubplotで配置の考え方をつかみ、複雑な図ではFigureとAxesを扱う構成へ進むと整理しやすくなります。
折れ線グラフ作成のサンプルコード9:対数軸を設定する
値の範囲が大きく広がるデータでは、通常の軸だけでは小さい値の変化が見えにくくなります。その場合は、plt.xscale('log')やplt.yscale('log')で対数軸に切り替えますが、覚えておくと役立つでしょう。
結果: 期待される表示は、x軸が対数スケールになり、x**2の変化を広い範囲で見られる折れ線グラフです。
このコードでは、np.logspace()で対数的に並んだ値を生成しています。横軸をlogにすることで、0.01から100までの値を一つの軸上で扱いやすくしています。
ただし、対数軸では0や負の値を表示できません。データに0以下が含まれる場合は、前処理で除外するか、通常軸や別の可視化方法を選ぶ必要があると覚えるとよいでしょう。
折れ線グラフ作成のサンプルコード10:3D折れ線グラフを作成する
3つの変数を同時に見せたい場合、3Dの折れ線グラフを使う選択肢があります。matplotlibではprojection='3d'を指定したAxesを作成し、ax.plot()に3軸分の値を渡します。
結果: 期待される表示は、X、Y、Timeの3軸に沿って線が伸びる3D折れ線グラフです。
この例では、tを時間、np.sin(t)をx座標、np.cos(t)をy座標として扱っています。ax.set_xlabel()、ax.set_ylabel()、ax.set_zlabel()で各軸の意味を示す構成です。
もっとも、3D表示は見た目が複雑になり、角度によって値の読み取りが難しくなる場合があります。2Dの折れ線グラフやサブプロットで十分に伝わる場合は、読み手の負担が少ない表現を選ぶほうが現実的です。
from mpl_toolkits.mplot3d import Axes3Dは古い例でも見かけますが、現在のmatplotlibではprojection='3d'だけで3D軸を作れる環境もあると考えられます。既存コードとの互換性を考えて残す例はありますが、新規コードでは公式ドキュメントの書き方を確認します。折れ線グラフ作成時のよくあるエラーとその解決方法
Pythonで折れ線グラフを作るときのエラーは、環境、データの形、オブジェクトの扱いに分けると整理しやすくなります。エラーメッセージは原因の入口になるため、全文を読み、該当する行番号と変数の状態を確認すると言えるでしょう。
エラー1:ImportError: No module named ‘matplotlib’
このエラーは、実行中のPython環境からmatplotlibが見つからないときに発生します。インストールした環境と実行している環境が違う場合にも起きるため、python -m pipで同じ処理系へ入れる方法が安定します。
結果: 期待される出力は、matplotlibのインストール処理、または既に条件を満たしている旨のメッセージです。
それでも解決しない場合は、python -c "import matplotlib"で読み込み可否を確認するのが基本です。仮想環境を使っている場合は、環境を有効化してからインストールと実行をそろえる必要があります。
エラー2:ValueError: x and y must have same first dimension
このエラーは、xとyの要素数が一致しないときに発生します。折れ線グラフは対応する点を線で結ぶため、横軸が10個なら縦軸も10個必要になるのが目安です。
このときは、len(x)とlen(y)を出力して数を確認します。CSVや表データから作る場合は、欠損値の削除やフィルタ処理で片方だけ行数が減っていないかを見直します。
エラー3:TypeError: unhashable type: ‘numpy.ndarray’
このエラーは、numpy.ndarrayのような変更可能な配列を、dictのキーやsetの要素に使おうとした場合に起きますし、ここを基本と考えるとよいでしょう。Pythonでは、辞書のキーにはハッシュ可能な値が必要です。
そのため、配列をキーにしたい設計ならtuple(array)へ変換するか、キーの設計を文字列や数値へ変えます。折れ線グラフ自体の描画エラーではなく、前処理のデータ構造で発生する点を切り分けると対応しやすくなります。
エラー4:AttributeError: ‘NoneType’ object has no attribute ‘plot’
このエラーは、Noneになっている変数に対して.plot()を呼び出したときに発生するのがポイントです。axへ入るはずのAxesが作られていない、または戻り値を誤って代入している可能性があります。
具体的には、fig, ax = plt.subplots()のようにFigureとAxesを受け取り、ax.plot(x, y)へ渡す形を確認します。関数の戻り値がNoneかどうかは、print(type(ax))で切り分けられますし、ここがポイントです。
type()、len()、print()を使うだけでも、初心者が原因を切り分けられる場面は多くあります。こうしたエラー対応の考え方は、Pythonの自動化や表処理でも共通するのが一般的です。ウィンドウ操作などの応用へ進む場合は、Pythonで実現!ウィンドウ操作の自動化15選のような別テーマでも、環境とデータ型の確認が土台になります。
折れ線グラフのカスタマイズ方法
折れ線グラフのカスタマイズでは、線の見た目、文字情報、軸範囲を調整します。Pythonのmatplotlibでは、plotの引数とplt.title()、plt.xlabel()、plt.xlim()などを組み合わせる形が基本になるのが現実的です。
その調整は、見栄えだけを整える作業ではありません。どの値が何を意味するのか、どの範囲を比較したいのかを明確にするためのコーディングであり、データビジュアライゼーションの品質に関わります。
結果: 期待される表示は、xとyの値を結んだ赤い点線の折れ線グラフです。
この例では、color='red'で線の色が決まり、linestyle='dashed'で点線寄りの表現になります。サンプルのxとyは通常のリストですが、NumPy配列でも同じ考え方で描けますが、これは押さえたい点です。
ただし、色名だけに頼ると、閲覧環境や色覚特性によって差が伝わりにくい場合があります。複数線を扱う場合は、markerやlinestyleも使うと識別しやすくなります。
結果: 期待される表示は、赤い点線の折れ線グラフにタイトル、x軸ラベル、y軸ラベルが付いた図です。
このコードでは、plt.title()で図全体の名前を付け、plt.xlabel()とplt.ylabel()で軸の意味を補っています。日本語を表示する場合、環境によってはフォント設定が必要になることがあります。
ちなみに、文字列の出力や改行の考え方を整理したい場合は、Pythonで改行あり・なしを制御する方法と応用例10選も役立ちますし、これが一つの目安です。グラフのラベルも文字列なので、Pythonの文字列処理を理解しておくと調整しやすくなります。
結果: 期待される表示は、x軸が0から10、y軸が0から20に固定された赤い点線の折れ線グラフです。
この例では、plt.xlim()とplt.ylim()で表示範囲を決めています。範囲を固定すると、複数の図を比較するときにスケールの違いによる誤読を抑えられます。
一方、範囲を狭くしすぎると一部のデータ点が見切れますが、覚えておくと役立つでしょう。初心者は、最初に自動スケールで全体を見てから、比較したい範囲に合わせてxlimやylimを調整すると失敗しにくくなります。
pandas.DataFrame.append()のような非推奨APIを古い記事で見ることがあります。表データを前処理してからPythonで折れ線グラフへ渡す場合、現在はpandas.concat()など、利用中のライブラリで推奨される方法を確認すると整理できます。使い分けると、線の色や太さは視認性、タイトルやラベルは意味の説明、軸範囲は比較条件の統一に関わります。機械学習の評価曲線などへ進む場合は、10ステップで学ぶ!Pythonと機械学習初心者向け完全ガイドの知識と組み合わせると、学習曲線や損失推移の読み取りにもつながります。
まとめ
Pythonで折れ線グラフを作る流れは、環境準備、データ生成、plt.plot()による描画、plt.show()による表示に分けられますし、ここを基本と考えるとよいでしょう。そこへlabel、legend、title、xlabel、ylabelを加えると、読み手が意味を追いやすい図になります。
そのうえで、color、linestyle、linewidth、grid、xscale、ylimなどを必要に応じて使い分けます。折れ線グラフは変化を読む図なので、線を増やしすぎず、軸と凡例で情報を整理することが実用上の要点になると理解できます。
これらの考え方を押さえると、初心者でもPythonのコーディングで時系列データや関数の変化を可視化できます。matplotlibを使ったデータビジュアライゼーションは、単なる描画ではなく、データの意味を読み手へ届けるための表現方法として扱うと理解が深まります。
関連記事
- Python初心者のための完全ガイド!アプリ化の10ステップ
- Pythonで実現!ウィンドウ操作の自動化15選
- 初心者必見!Pythonで表を操作するための7つの詳細ガイド
- Pythonで改行あり・なしを制御する方法と応用例10選
- 10ステップで学ぶ!Pythonと機械学習初心者向け完全ガイド
※本記事は実在のエンジニア複数名で構成される Japanシーモア編集部が、AI支援を活用して作成・校正・公開しています。


