2011-07-06 77 views
11

我想在matplotlib中做一個曲面圖,但我無法使z軸的格式很好看。我希望它是科學記數法,沿軸的前綴和軸上的指數(就像你通常在matlab中得到的那樣)。目前,我只能得到沒有科學記數法的值(前面帶有逗號和5個零),或者我得到前綴但不是指數...在mplot3d中z軸格式化

嘗試1 :(給出科學記數法,但不是指數)

from matplotlib import ticker 

ax = fig.gca(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=3, cstride=3) 
formatter = ticker.ScalarFormatter() 
formatter.set_scientific(True) 
formatter.set_powerlimits((-2,2)) 
ax.w_zaxis.set_major_formatter(formatter) 

嘗試2:(給)十進制形式值,同默認輸出

from matplotlib import ticker 

ax = fig.gca(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=3, cstride=3) 
ax.ticklabel_format(axis="z", style="sci", scilimits=(0,0)) 

我在做什麼錯在這裏?

+1

是否使用的是matplotlib的版本?你可能會遇到一個直到1.0.1才修復的bug。 http://old.nabble.com/Displaying-offsets-in-3d-plots-td30474615.html –

+1

@Stephen Terry:我正在運行1.0.1。 'Python 2.7.1 | EPD 7.0-2(32-bit)| (r271:86832,2010年12月3日,15:41:32) [GCC 4.0.1(Apple Inc. build 5488)] on darwin >>> import matplotlib >>> matplotlib .__ version__ '1.0.1' ' – Magnus

回答

3

當您創建ScalarFormatter,嘗試「用數學文本」參數:

from matplotlib import ticker 
niceMathTextForm = ticker.ScalarFormatter(useMathText=True) 
ax.w_zaxis.set_major_formatter(niceMathTextForm) 
+1

useOffset = false對科學計數法也很好 – denfromufa