一、常用的顏色函數
在Python畫圖中,我們最常用的顏色函數就是color或c,通過指定RGB顏色或顏色名稱來設置顏色。
import matplotlib.pyplot as plt
# 使用RGB顏色值設置顏色
plt.plot([0,1,2,3,4],[0,1,4,9,16],color=(0.5,0.5,0.5))
plt.show()
# 使用顏色名稱設置顏色
plt.plot([0,1,2,3,4],[0,1,4,9,16],color='purple')
plt.show()
上述代碼中,我們使用了color函數來設置線條顏色。在第一個例子中,我們通過RGB顏色值(0.5,0.5,0.5)設置線條顏色;在第二個例子中,我們使用了顏色名稱”purple”設置線條顏色。
二、顏色映射
當我們需要在畫圖中使用大量的顏色時,手動指定每個顏色會非常麻煩。Matplotlib提供了顏色映射,可以讓我們方便地將數據轉換為顏色。
使用顏色映射,我們可以使用函數scatter來繪製散點圖,並使用c參數指定數據與顏色的映射關係。
import matplotlib.pyplot as plt
import numpy as np
# 生成隨機數據
np.random.seed(0)
x = np.random.randn(1000)
y = np.random.randn(1000)
colors = np.random.randn(1000)
plt.scatter(x,y,c=colors,cmap='viridis')
plt.colorbar()
plt.show()
在上述代碼中,我們使用了scatter函數來繪製散點圖。通過c參數指定了顏色數據colors,通過cmap參數指定使用的顏色映射為viridis。運行上述代碼,我們可以看到生成的散點圖中,顏色越深的點對應的數據值越小,顏色越淺的點對應的數據值越大。
三、自定義顏色映射
雖然Matplotlib提供了多種顏色映射,但有時候我們需要自定義顏色映射。我們可以使用LinearSegmentedColormap函數來自定義顏色映射。
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
# 自定義顏色映射
cmap = colors.LinearSegmentedColormap.from_list('my_colormap',['blue','red'])
# 生成隨機數據
np.random.seed(0)
x = np.random.randn(1000)
y = np.random.randn(1000)
colors = np.random.rand(1000)
plt.scatter(x,y,c=colors,cmap=cmap)
plt.colorbar()
plt.show()
在上述代碼中,我們使用了LinearSegmentedColormap函數來自定義顏色映射。由於自定義顏色映射為從藍色到紅色的漸變效果,所以生成的散點圖同樣呈現從藍色到紅色的漸變色。
四、使用虹色
有時候我們需要使用虹色來繪製圖形,在Matplotlib中可以通過使用 ListedColormap 函數來實現。
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as np
# 定義虹色
colors = ['#9400d3','#4b0082','#0000ff','#00ff00','#ffff00','#ff7f00','#ff0000']
cmap = ListedColormap(colors)
# 生成隨機數據
np.random.seed(0)
x = np.random.randn(1000)
y = np.random.randn(1000)
z = np.sin(x**2+y**2)
plt.scatter(x,y,c=z,cmap=cmap)
plt.colorbar()
plt.show()
在上述代碼中,我們通過定義顏色列表colors和ListedColormap函數來定義虹色。然後通過scatter函數來繪製散點圖,通過c參數指定數據與顏色的映射關係,使用我們定義的虹色映射cmap。
五、使用色帶
色帶與顏色映射類似,可以讓數據與顏色之間產生映射關係。在Matplotlib中,我們可以使用Axes對象的imshow函數來繪製色帶。
import matplotlib.pyplot as plt
import numpy as np
# 生成數據
x = np.linspace(-5,5,100)
y = np.linspace(-5,5,100)
X,Y = np.meshgrid(x,y)
Z = np.sin(np.sqrt(X**2+Y**2))
# 繪製色帶
plt.imshow(Z,extent=[-5,5,-5,5],cmap='coolwarm')
plt.colorbar()
plt.show()
在上述代碼中,我們通過meshgrid函數生成了二維的數據Z,並使用imshow函數來繪製色帶。通過extent參數指定坐標軸的範圍,通過cmap參數指定顏色映射。
原創文章,作者:SYYQD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371561.html