等值線圖
等值線圖或等高線圖在科學界很常用。這種可視化方法用由一圈圈封閉的曲線組成的等值線圖表示三維結構的表面,其中封閉的曲線表示的是一個個處於同一層級或z值相同的數據點。
雖然等值線圖看上去結構很複雜,其實用matplotlib實現起來並不難。首先,你需要用z=f(x,y)函數生成三維結構。然後,定義x、y的取值範圍,確定要顯示的區域。之後使用f(x,y)函數計算每一對(x,y)所對應的z值,得到一個z值矩陣。最後,用contour( )函數生成三維結構表面的等值線圖。定義顏色表,為等值線圖添加不同的顏色,效果往往會更好;也就是說,用漸變色填充由等值線劃分成的區域。如下所示,用逐漸加深的藍色陰影表示負值,而隨著數值的增大,則逐漸該用黃色甚至紅色。
標準的漸變色組合(顏色表)如上所示,在實際應用中,要從多種顏色中選定你需要的顏色,把它賦給cmap關鍵字參數。
此外,如若使用等值線圖,在該圖的一側增加圖例作為對圖表中所用顏色的說明幾乎是必需的。在代碼的最後增加colorbar( )函數即可實現該功能。下面我們將展示的圖表會用另外一種顏色表,先是由黑色過渡到紅色,再過渡到黃色,最後最大值使用白色。這種彩圖中,cmap參數為plt.cm.hot。
極區圖
另外一種取得了一定成功的高級圖表是極區圖。這種圖表由一系列呈放射狀延伸的區域組成,其中每塊區域佔據了一定的角度。因此若要用極區圖表示兩個不同的數值,分別指定它們在極區圖中所佔的分量;每塊區域的半徑r和它所佔的角度,其實這就是極坐標(r,θ),是在坐標軸系中表示數據的另一種方法。從圖表的角度來看,你可以將其視作兼有餅圖和條狀圖特點的圖表。之所以說它像餅圖,是因為每個區域的角度所表示的是其所屬類別佔全部類別的比例。至於說它像條狀圖,是因為半徑的長度表示某一類別的數值大小。
到目前為止,我們一直使用標準顏色集,每種顏色用單一字符顏色編碼來表示(例如,r代表紅色)。事實上。你可以自定義任意的顏色列表,方法是指定顏色列表,其中每個元素為字符串類型的RGB編碼,其格式為#rrggbb。
奇怪的是,製作極區圖需要使用bar( )函數,把角度θ列表和半徑列表傳遞給它。你講得到如下所示的極圖:
這個例子中,我們定義了一列#rrggbb格式的顏色值,其實還可以用顏色的實際名稱來表示顏色。
mplot3d
mplot3d工具集是matplotlib內置的標配,可用來實現3D可視化功能。如果生成的圖形在單獨的窗口顯示,你還可以用滑鼠旋轉三維圖形的軸進行查看。
mplot3d仍然使用Figure對象,只不過Axes對象要替換為該工具集的Axes3D對象。因此,使用Axes3D對象前,需要先將其導入進來。
from mpl_toolkits.mplot3d import Axes3D
下面一節我們將具體介紹實現3D可視化功能的例子。