Matplotlibでsemilogx・semilogyを使った対数スケールプロットを作成する方法
Matplotlibでは、semilogxやsemilogyを使うことで、片方の軸だけに対数スケールを適用したグラフを簡単に作成できます。ここでは、X軸とY軸それぞれに対数スケーリングを設定したプロットの作り方を、具体的な手順とともに解説します。
semilogx・semilogyプロットの作成手順
- 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- 新しい図を作成するか、既存の図をアクティブにします。
- xデータとyデータの点をscatter()で散布図として描画し、plot()で線を重ねて表示します。
- semilogx()を呼び出して、X軸に対数スケーリングを適用します。
- semilogy()を呼び出して、Y軸に対数スケーリングを適用します。
- 最後にshow()メソッドを実行して、図を画面に表示します。
コード例
import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x = [10, 100, 1000, 10000, 100000] y = [2, 4, 8, 16, 32] fig = plt.figure() plt.scatter(x, y) plt.plot(x, y) plt.semilogx() plt.semilogy(basey=2) plt.show()
このコードでは、xに10から100000までの値(各桁が10倍ずつ増加)、yに2から32までの値(2倍ずつ増加)を使用しています。semilogx()によりX軸が常用対数(底10)のスケールになり、semilogy(basey=2)によりY軸が底2の対数スケールになります。その結果、指数的な増加をするデータが直線的に見えるようになります。
注意: basey引数は古いバージョンのMatplotlibでの指定方法です。Matplotlib 3.3以降では非推奨となっており、代わりにplt.semilogy(base=2)のようにbase引数を使用してください。
出力結果

実行すると、X軸が10刻みの対数目盛り、Y軸が2刻みの対数目盛りで表示されたグラフが描画されます。このように対数スケールを活用すると、桁違いに大きくなるデータや指数関数的な変化を含むデータも、見やすい形で可視化できます。
-
Matplotlibの図に凡例を配置・整列させる方法
Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl
-
Pythonのmatplotlibで1つのページに複数のプロットを作成する方法
Pandasとmatplotlibを組み合わせることで、データフレームから図(figure)と軸(axis)を簡単に作成し、scatterメソッドを使って点をプロットできます。ここでは、学生の人数と取得点数の関係を散布図として可視化する手順を紹介します。 実装の手順 学生のリスト、各学生が取得した点数のリスト、スコアごとの色分け用リストを作成します。 PandasのDataFrameを使って、手順1のデータからデータフレームを作成します。 subplotsメソッドでfigとax変数を作成します。デフォルトでは行数(nrows)と列数(ncols)はどちらも1に設定されています。 plt.xl