pcolor是Python中一種適用於二維數組可視化的函數,可以根據提供的數據矩陣自動著色,並將結果可視化到一個坐標系中,用於顯示數組中的數據分布。pcolor用法逐步介紹。
一、從pcolor改色膜
改色膜意味著改變著色方式,比如從默認的jet改變成其他顏色。使用colormap參數可以改變pcolor的顏色映射。matplotlib中有很多預定義的配色方案,包括:viridis(紫草)、plasma(血漿)、inferno(地獄)、magma(岩漿)和cividis(城市)等。
import matplotlib.pyplot as plt import numpy as np # 生成隨機數據 data_array = np.random.random((10,10)) # 繪製默認顏色矩陣 plt.subplot(121) plt.pcolor(data_array) # 繪製改色之後的顏色矩陣 plt.subplot(122) plt.pcolor(data_array, cmap=plt.cm.viridis) plt.show()
上述代碼中,我們首先生成了一個隨機的10×10二維數組的數據,然後使用subplot將兩個圖像放在同一個窗口中便於比較。第一個圖使用了默認的顏色映射jet,第二個圖使用了viridis。
二、color函數怎麼用
color函數是定義顏色映射關係的函數,可以將標量值映射為顏色值。現在可以在pcolor中使用color函數來自定義顏色映射。
import matplotlib.pyplot as plt import numpy as np # 自定義顏色映射 def mymap(x): r = (x-0.5)*2 g = (0.5-x)*2 b = 0 return (r,g,b) # 生成隨機數據 data_array = np.random.random((10,10)) # 繪製自定義顏色映射的顏色矩陣 plt.pcolor(data_array, cmap=mymap) plt.show()
代碼中我們使用了名為mymap的自定義色彩映射函數。
三、pcolormesh顏色
pcolor和pcolormesh最大的區別在於,pcolormesh參數需要讀入坐標軸數組,pcolor則不需要。下面我們看一下如何使用pcolormesh。
import matplotlib.pyplot as plt import numpy as np # 生成坐標軸數組 x = np.arange(11) y = np.arange(11) # 生成隨機2D數據 data_array = np.random.random((10,10)) # 繪製顏色矩陣 plt.pcolormesh(x,y,data_array) plt.show()
代碼中,我們調用pcolormesh函數時,將 x軸和 y軸的數組一起傳入。pcolor函數則無需傳入坐標軸數組,因此在坐標系繪製上具有更大的靈活性。
四、pcolor矩陣維度不一致
當數據矩陣維度不一致時,可以使用masked數組將需要被隱藏的部分替換為NaN來創造矩陣的不規則形狀。這樣可以更精細的繪製顏色矩陣。
import matplotlib.pyplot as plt import numpy as np # 生成數據矩陣 data_array = np.random.random((10,10)) data_array[3,4:6] = np.nan data_array[4,3:7] = np.nan # 創建表示mask數據是否存在的矩陣 masked_array = np.ma.masked_where(np.isnan(data_array), data_array) # 繪製mask矩陣 plt.pcolor(masked_array, cmap=plt.cm.viridis) plt.show()
在這個例子中,我們使用了numpy模塊中的函數,將需要被隱藏的值替換成了NaN。然後我們使用ma模塊的masked_where函數創建了一個表示mask數據是否存在的矩陣。最後將masked_array傳遞給pcolor函數,從而繪製出顏色矩陣。
五、pcolor顏色數據輸入必須為矩陣
在使用時,需要保證輸入的顏色數據為矩陣類型,在實踐中常常會遇到數據不是矩陣的情況。這種情況下需要對數據進行重組或者轉置。下面是一些處理方法。
import matplotlib.pyplot as plt import numpy as np # 生成數組數據 x = np.linspace(0, 10, 20) y = np.linspace(0, 10, 10) X,Y = np.meshgrid(x,y) data_array = X**3 - 10*Y**2 # 用ravel()函數將data_array轉化為向量 x = np.linspace(0, 10, 20) y = np.linspace(0, 10, 10) X,Y = np.meshgrid(x,y) data_array = X**3 - 10*Y**2 # 將data_array轉化為二維矩陣形式 z = np.reshape(data_array, (10,20)).T # 繪製矩陣形式的顏色矩陣 plt.pcolor(z, cmap=plt.cm.viridis) plt.show()
上述例子中數據為一維數組,我們使用numpy的reshap函數重組數據為矩陣形式,或者使用numpy的meshgrid函數將一維數組重組為二維矩陣形式。經過重組或者轉制後的數據可以傳遞給pcolor函數,繪製顏色矩陣。
六、color函數用法
color函數是matplotlib中定義顏色的函數,可用於設置圖像、曲線、文本等要素的顏色。color參數可以為多種類型,例如顏色名稱,RGB顏色值,還可以使用HTML顏色字元串等。更多關於color函數的用法請參考matplotlib官方文檔。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,np.pi*2,100) y = np.sin(x) plt.plot(x,y,color='red') # 設置線條顏色為紅色 plt.show()
代碼中我們使用color參數將折線圖的線條顏色設置為紅色。color函數可以接受一系列字元串和元組類型的顏色值,還可以使用HTML顏色字元串和連續色彩條。關於color函數的各種參數請參考官方文檔。
七、color與colour的區別
color和colour其實是個單詞拼寫的差別。英式英語中常用的是colour,而美式英語中則常用color。Python使用的是美式英語,因此我們在編寫代碼時應該使用color。
總結
繪製顏色矩陣是我們在處理數據可視化時經常用到的一種方法,pcolor是Python中繪製顏色矩陣最常見的函數之一。通過學習本文中的例子,讀者可以逐步掌握pcolor的基本用法和相關技巧。
原創文章,作者:BIPZM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325026.html