2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

loglogでMatplotlibの両対数グラフを一発表示する方法

Last updated at Posted at 2025-04-13

はじめに

データ解析の中で、縦軸も横軸もスケールが広いケースってよくありますよね。そこで、便利なのが両対数表示です。

たとえば、天文系の解析をしていると、

  • 可視光の相対測光の校正
  • フラックスの波長依存性の確認
  • パワースペクトル密度(PSD)の可視化

といった場面で、log-logスケールのグラフを描きたくなるわけです。

……でも、log-logって、案外一筋縄ではいかないんですよね。


そんなときに便利なのが、matplotlibloglog() 関数。
これ、たった一行で両対数グラフにしてくれるんです。

「えっ、そんな関数あるの??何それ?」と思ったあなた、
ぜひこの記事で loglog() の魅力をのぞいてみてください。

loglog()の使い方

import matplotlib.pyplot as plt
import numpy as np

x = np.logspace(0.1, 2, 1000)
y = x ** -2

plt.loglog(x, y)

image.png

これだけで、両対数軸のグラフが一発で完成します!

筆者は loglog() の存在を知ったとき、「えっ、これだけで済むの?」とちょっと感動しました。logスケールを設定するたびに毎回 xscaleyscale を手動で書いていたあの時間、一体なんだったのか……と思わずにはいられませんでした。

loglog() の裏側

実は loglog() の内部では、以下のような処理が行われています。

plt.plot(x, y)
plt.xscale('log')
plt.yscale('log')

つまり、plot() のラッパー関数として、両軸をlogスケールに設定してくれるショートカットなんです。


そして実は、x軸だけ / y軸だけをlogにするためのヘルパー関数も用意されています。
それが semilogx()(横軸だけlog)、 semilogy()(縦軸だけlog)です。

plt.semilogx(x, y)  # x軸だけlog
plt.semilogy(x, y)  # y軸だけlog
出力例を見る
  • semilogx(x, y)(横軸方向がlog表示)
    image.png

  • semilogy(x, y)(縦軸方向がlog表示)
    image.png

scatter()では使えない?と思ったら…

ここでちょっと注意点があります。
loglog()semilogx() などは plt.plot() のラッパー関数なので、plt.scatter() には直接使えません

でも、安心してください。ちょっとした工夫でちゃんと実現できます。


方法1:xscale() / yscale() を手動で指定

plt.scatter(x, y)
plt.xscale('log')
plt.yscale('log')

このように、スケールを手動で設定すれば、scatter() でも log-log 表示が可能です。


方法2:loglog() をスケール設定のために使用

plt.scatter(x, y)
plt.loglog()  # 何も描かずにスケールだけlogに設定

このように loglog()スケール設定だけの目的で使う 裏技もあります。
この方法は、semilogx()semilogy() にもそのまま応用できます。

知らなかった人も多いのでは?
筆者も最初は「便利だけど、loglogscatter では使えないのか…ちょっと寂しいな」と思っていました。
でも、この方法を知ってからは、logスケールでの可視化の選択肢が増えて、表現の幅がぐっと広がったように感じます。

まとめ

loglog() は、両軸を一瞬でlogスケールにできる便利な関数です。
同様に、semilogx()semilogy() を使えば、片対数グラフもすぐに描けます。

こういったヘルパー関数って意外と見落としがちで、発掘したときのちょっとした感動って、ふと記憶に残ってたりするんですよね。

気軽にlogスケールでプロットできるようになると、データ解析がサクサク進んで、ちょっと楽しくなってきます。
この記事が、同じような発掘を楽しむ方の役に立てたら嬉しいです。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?