我創造了利用Matlab更改X軸在matplotlib
使用matplotlib該地塊規模,X-軸距吸引大批如100000,200000 300000我想有像1 ,2,3和10^5來表明它實際上是100000,200000,300000.
有沒有一種簡單的方法來在matplotlib中創建這樣的比例尺?
我創造了利用Matlab更改X軸在matplotlib
使用matplotlib該地塊規模,X-軸距吸引大批如100000,200000 300000我想有像1 ,2,3和10^5來表明它實際上是100000,200000,300000.
有沒有一種簡單的方法來在matplotlib中創建這樣的比例尺?
嘗試使用matplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
這適用科學記數法(即a x 10^b
)到您的x軸刻度線
的scalar formatter支持收集的指數。該文檔如下:
類matplotlib.ticker.ScalarFormatter(useOffset =真, useMathText =假,useLocale =無)鹼:matplotlib.ticker.Formatter
蜱位置是一個普通的舊數。如果useOffset == True且數據範圍遠小於數據平均值,則將確定一個偏移量 ,以使刻度標籤有意義。科學 符號用於數據< 10^-n或數據> = 10^m,其中n和m是使用set_powerlimits((n,m))設置的功率限制。 的默認值由axes.formatter.limits rc參數控制。
你的技術是:
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)
要獲得格式x10^5
顯示的指數,與useMathText=True
實例化ScalarFormatter。
您還可以使用:
xfmt.set_useOffset(10000)
爲了得到這樣的結果:
我喜歡這個解決方案,但我更喜歡'x10^4'而不是'1e4' – Eagle 2012-07-20 13:36:21
我同意。我相信這是可能的,但我不知道如何。 – 2012-07-27 12:58:02
用'useMathText = True'實例化ScalarFormatter以獲得'x10^4'。 – 2015-03-06 16:39:48
我找到簡單的解決方案
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))
這不是對你的原始問題的回答,而是你在問題主體中的其中一個查詢。
小序言,讓自己的命名似乎並不奇怪:
import matplotlib
from matplotlib import rc
from matplotlib.figure import Figure
ax = self.figure.add_subplot(111)
正如所提到的,您可以使用ticklabel_format指定matplotlib應該用科學計數法或大或小的值:
ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')
您可以使用rcParams中的標誌(來自matplotlib import rcParams)或通過直接設置它們來影響顯示方式。我還沒有發現「1E」和「X10 ^」科學記數法比之間改變一個更優雅的方式:
ax.xaxis.major.formatter._useMathText = True
這應該給你更多的Matlab的ESC,確實可以說是更好的外觀。我認爲以下應該做同樣的:
rc('text', usetex=True)
是啊,它不漂亮,但它的作品,謝謝! – 2017-02-28 07:43:56
它仍然有效:-) – uhoh 2018-02-16 02:29:43
工作,謝謝。 – Eagle 2012-07-20 13:06:37
是否可以添加偏移量? (例如,代替0.0,0.5,1.0,1.5,...和x 10^b,它將是0,5,10,15,...和x 10^{b-1}) – Eagle 2012-07-20 13:20:22
'ticklabel_format'也是一個方法的軸對象,你可以嘗試像 'ax.ticklabel_format(style ='sci',axis ='x',scilimits =(0,0))' – Covich 2016-03-22 10:47:33