Matplotlibを使用して複数の折れ線グラフを素早く作成する方法
Published on
データの視覚化は、データ分析パイプラインの重要な部分です。複雑なデータセットの明確で直感的な表現を可能にし、生データだけでは明らかにならないトレンドやパターンを発見するために役立ちます。この目的に使用できるツールの中でも、Matplotlibは、静的、アニメーション、インタラクティブなプロットを作成するための多目的で強力なPythonライブラリの一つです。
Matplotlibでよく使用される機能の1つは、1つのチャートで複数の折れ線グラフを作成できることです。この包括的なガイドでは、基本的な原則やより高度な概念に焦点を当て、これらの視覚化を作成する方法について掘り下げます。
基本: 2つのラインをプロットする
2つの折れ線グラフを同じプロットにプロットする単純なシナリオから始めましょう。以下は、ユーザーがオンラインフォーラムに投稿したコードで、y軸が2回印刷されていることが報告されています。
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, y1)
plt.plot(x, y2, '-.')
plt.xlabel("X軸データ")
plt.ylabel("Y軸データ")
plt.title('multiple plots')
plt.show()
コードを簡単に見ると、プロットされているy値が数値の代わりに文字列であることが原因であることがわかります。Matplotlibが文字列データに出会うと、これらの値を数値のスケールでプロットしません。代わりに、単に文字列ラベルをそれぞれのx座標にプロットし、y軸に複数のラベルが重なることになります。
文字列の問題を修正する: 数値に変換する
この問題を解決するには、文字列の中の「k」を「e3」に置き換え、これらの文字列が科学表記法で数字を表現できるようにする必要があります。Pythonの float()
関数を使用して浮動小数点数に変換できます。
修正後のコードは以下のようになります:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
plt.xlabel("X軸データ")
plt.ylabel("Y軸データ")
plt.title('multiple plots')
plt.show()
この簡単な変更により、ユーザーはy軸のラベルが複製されないように同じグラフに2つの線を正しくプロットすることができました。ただし、この変換は純粋にプロットの目的で行われ、元のデータは変更されません。
複数の線プロットの微調整:凡例、グリッド線、注釈
凡例は legend()
関数を使用してプロットに追加できます。グリッド線は、 grid()
関数を使用してオン/オフにすることができます。注釈には、 annotate()
関数を使用してチャートに情報を提供するテキストを追加できます。
これらのテクニックを適用することで、Matplotlibで多数のラインプロットを作成するための最終的なコードは次のようになります。
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='Line 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='Line 2')
plt.xlabel("X-axis data")
plt.ylabel("Y-axis data")
plt.title('multiple plots')
plt.grid(True)
plt.legend()
plt.annotate('Peak value for Line 2', xy=(4, 85000), xytext=(3, 70000),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
明らかなように、Matplotlibを使用して複数のラインプロットを作成することは、美しい、有益で深い洞察を与える多様なカスタマイズオプションを提供する比較的簡単なプロセスです。
FAQ
Q:Matplotlibを使用して1つのチャートで2つ以上のラインをプロットできますか?
はい、Matplotlibを使用して1つのチャート上に必要な数だけラインをプロットできます。各ラインの所望のデータを使用して plot()
関数を繰り返すだけです。
Q:Matplotlibで作成できる他のプロットのタイプにはどのようなものがありますか?
Matplotlibは、スキャッタープロット、棒グラフ、ヒストグラム、さらには3Dプロットなど、さまざまなプロットタイプをサポートしています。このライブラリは非常に多目的であり、ほとんどすべてのデータ可視化ニーズを満たすことができます。
Q:Matplotlibを使用してプロットをファイルに保存するにはどうすればよいですか?
プロットを作成した後、 savefig()
関数を使用してファイルに保存できます。関数はファイル名を引数として取り、適切なファイル拡張子(PNG、PDF、SVGなど)を使用してファイルの形式を指定できます。
plt.savefig('my_plot.png')
Matplotlibの代替:PyGWalkerを使用してデータを可視化する
pandas DataFrameを可視化するためにMatplotlibを使用する方法の代わりに、データ可視化を簡単に作成することができる別の、オープンソースのPythonライブラリであるPyGWalker (opens in a new tab)があります。
Pythonコーディングで複雑な処理を完了する必要はありません。データをインポートし、変数をドラッグアンドドロップしてさまざまなデータ可視化を作成するだけです!操作に関するクイックデモビデオは次のとおりです: 以下は、あなたのJupyterノートブックでPyGWalkerを使う方法です:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
または、Kaggle Notebook/Google Colabで試すこともできます:
PyGWalkerは、私たちのオープンソースコミュニティのサポートを基に構築されています。PyGWalker GitHub (opens in a new tab)をチェックして、私たちに星を与えるのを忘れないでください!
よくある質問
Matplotlibを使用して、1つのチャートに2本以上の線をプロットできますか?
はい、Matplotlibを使用して1つのチャートに必要なだけ多くの線をプロットすることができます。単に、各線に必要なデータを持つplot()関数を反復的に使用します。
Matplotlibで作成できる他のプロットの種類には何がありますか?
Matplotlibは、散布図、棒グラフ、ヒストグラム、3Dプロットを含め、幅広いプロットタイプをサポートしています。このライブラリは非常に多機能で、ほとんどのデータ可視化要件を満たすことができます。
Matplotlibを使用して、プロットをファイルに保存するにはどうすればよいですか?
プロットを作成した後、savefig()関数を使用してファイルに保存することができます。この関数は、ファイル名を引数として受け取り、適切なファイル拡張子(例えば、PNG、PDF、SVGなど)を使用してファイルの形式を指定することができます。