簡體   English   中英

在 python 中使用 matplotlib 繪制對數軸

[英]Plot logarithmic axes with matplotlib in python

我想使用 matplotlib 繪制具有一個對數軸的圖形。

我一直在閱讀文檔,但無法弄清楚語法。 我知道這可能是情節參數中的'scale=linear'之類的簡單內容,但我似乎無法正確理解

示例程序:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)
pylab.show()

您可以使用Axes.set_yscale方法。 這允許您在創建Axes對象后更改比例。 這也將允許您構建一個控件,讓用戶在需要時選擇比例。

要添加的相關行是:

ax.set_yscale('log')

您可以使用'linear'切換回線性比例。 這是您的代碼的樣子:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)

ax.set_yscale('log')

pylab.show()

結果圖

首先,混合pylabpyplot代碼不是很整潔。 更重要的是, pyplot 風格比使用 pylab 更受歡迎

這是一個稍微清理過的代碼,僅使用pyplot函數:

from matplotlib import pyplot

a = [ pow(10,i) for i in range(10) ]

pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()

相關函數是pyplot.yscale() 如果您使用面向對象的版本,請將其替換為Axes.set_yscale()方法。 請記住,您還可以使用pyplot.xscale() (或Axes.set_xscale() )更改 X 軸的比例。

檢查我的問題'log'和'symlog'有什么區別? 查看 matplotlib 提供的圖形比例的一些示例。

如果要更改對數的底,只需添加:

plt.yscale('log',base=2) 

在 Matplotlib 3.3 之前,您必須使用 basex/basey 作為 log 的基礎

您只需要使用符號學而不是情節:

from pylab import *
import matplotlib.pyplot  as pyplot
a = [ pow(10,i) for i in range(10) ]
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)

line, = ax.semilogy(a, color='blue', lw=2)
show()

我知道這有點離題,因為一些評論提到ax.set_yscale('log')是“最好的”解決方案,我認為可能需要反駁。 我不建議將ax.set_yscale('log')用於直方圖和條形圖。 在我的版本(0.99.1.1)中,我遇到了一些渲染問題——不確定這個問題有多普遍。 然而 bar 和 hist 都有可選的參數來設置 y-scale 為 log,這工作正常。

參考資料:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist

因此,如果您只是像我經常使用的那樣簡單地使用簡單的 API(我在 ipython 中經常使用它),那么這很簡單

yscale('log')
plot(...)

希望這對尋找簡單答案的人有所幫助! :)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM