散點圖
創(chuàng)建散點圖
使用 Pyplot,您可以使用 scatter()
函數(shù)來繪制散點圖。
scatter()
函數(shù)為每個觀測值繪制一個點。它需要兩個長度相同的數(shù)組,一個用于 x 軸的值,另一個用于 y 軸的值:
實例
一個簡單的散點圖:
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y) plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

上例中的觀測值是 13 輛汽車經(jīng)過的結果。
X 軸顯示了汽車的車齡。
Y 軸顯示了汽車經(jīng)過時的速度。
這些觀測值之間是否存在關系?
看起來車越新,開得越快,但這可能只是巧合,畢竟我們只記錄了 13 輛汽車。
比較圖表
在上面的例子中,速度和年齡之間似乎存在某種關系,但如果我們再將另一天的觀測值也繪制出來會如何呢?散點圖會告訴我們其他信息嗎?
實例
在同一張圖上繪制兩個圖表:
import matplotlib.pyplot as plt import numpy as np # 第一天,13 輛汽車的車齡和速度: x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y) # 第二天,15 輛汽車的車齡和速度: x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12]) y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85]) plt.scatter(x, y) plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

注意:兩個圖表使用兩種不同的顏色繪制,默認是藍色和橙色,稍后在本章中您將學習如何更改顏色。
通過比較這兩個圖表,我認為可以安全地說它們都給出了相同的結論:汽車越新,開得越快。
顏色
您可以使用 color
或 c
參數(shù)為每個散點圖設置自己的顏色:
實例
設置標記點的顏色:
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y, color = 'hotpink') x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12]) y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85]) plt.scatter(x, y, color = '#88c999') plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

為每個點著色
您甚至可以使用顏色數(shù)組作為 c
參數(shù)的值來為每個點設置特定顏色:
注意:您不能為此使用 color
參數(shù),只能使用 c
參數(shù)。
實例
設置標記點的顏色:
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"]) plt.scatter(x, y, c=colors) plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

彩色映射
Matplotlib 模塊提供了許多可用的彩色映射。
彩色映射就像顏色列表,其中每種顏色都有一個從 0 到 100 的值。
以下是一個彩色映射的例子:

這個彩色映射稱為 'viridis',如您所見,它從 0(紫色)開始,一直到 100(黃色)。
如何使用彩色映射
您可以使用關鍵字參數(shù) cmap
和彩色映射的值來指定彩色映射,在這種情況下,'viridis'
是 Matplotlib 中可用的內置彩色映射之一。
此外,您必須創(chuàng)建一個數(shù)組,其中包含值(從 0 到 100),每個散點圖中的點一個值:
實例
創(chuàng)建顏色數(shù)組,并在散點圖中指定彩色映射:
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100]) plt.scatter(x, y, c=colors, cmap='viridis') plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

您可以通過包含 plt.colorbar()
語句來在繪圖中包含彩色映射:
實例
包含實際的彩色映射:
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100]) plt.scatter(x, y, c=colors, cmap='viridis') plt.colorbar() plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

可用的彩色映射
您可以選擇任意內置彩色映射:
名稱 | 試一試 | 反轉 | 試一試 |
---|---|---|---|
Accent | 試一試 | Accent_r | 試一試 |
Blues | 試一試 | Blues_r | 試一試 |
BrBG | 試一試 | BrBG_r | 試一試 |
BuGn | 試一試 | BuGn_r | 試一試 |
BuPu | 試一試 | BuPu_r | 試一試 |
CMRmap | 試一試 | CMRmap_r | 試一試 |
Dark2 | 試一試 | Dark2_r | 試一試 |
GnBu | 試一試 | GnBu_r | 試一試 |
Greens | 試一試 | Greens_r | 試一試 |
Greys | 試一試 | Greys_r | 試一試 |
OrRd | 試一試 | OrRd_r | 試一試 |
Oranges | 試一試 | Oranges_r | 試一試 |
PRGn | 試一試 | PRGn_r | 試一試 |
Paired | 試一試 | Paired_r | 試一試 |
Pastel1 | 試一試 | Pastel1_r | 試一試 |
Pastel2 | 試一試 | Pastel2_r | 試一試 |
PiYG | 試一試 | PiYG_r | 試一試 |
PuBu | 試一試 | PuBu_r | 試一試 |
PuBuGn | 試一試 | PuBuGn_r | 試一試 |
PuOr | 試一試 | PuOr_r | 試一試 |
PuRd | 試一試 | PuRd_r | 試一試 |
Purples | 試一試 | Purples_r | 試一試 |
RdBu | 試一試 | RdBu_r | 試一試 |
RdGy | 試一試 | RdGy_r | 試一試 |
RdPu | 試一試 | RdPu_r | 試一試 |
RdYlBu | 試一試 | RdYlBu_r | 試一試 |
RdYlGn | 試一試 | RdYlGn_r | 試一試 |
Reds | 試一試 | Reds_r | 試一試 |
Set1 | 試一試 | Set1_r | 試一試 |
Set2 | 試一試 | Set2_r | 試一試 |
Set3 | 試一試 | Set3_r | 試一試 |
Spectral | 試一試 | Spectral_r | 試一試 |
Wistia | 試一試 | Wistia_r | 試一試 |
YlGn | 試一試 | YlGn_r | 試一試 |
YlGnBu | 試一試 | YlGnBu_r | 試一試 |
YlOrBr | 試一試 | YlOrBr_r | 試一試 |
YlOrRd | 試一試 | YlOrRd_r | 試一試 |
afmhot | 試一試 | afmhot_r | 試一試 |
autumn | 試一試 | autumn_r | 試一試 |
binary | 試一試 | binary_r | 試一試 |
bone | 試一試 | bone_r | 試一試 |
brg | 試一試 | brg_r | 試一試 |
bwr | 試一試 | bwr_r | 試一試 |
cividis | 試一試 | cividis_r | 試一試 |
cool | 試一試 | cool_r | 試一試 |
coolwarm | 試一試 | coolwarm_r | 試一試 |
copper | 試一試 | copper_r | 試一試 |
cubehelix | 試一試 | cubehelix_r | 試一試 |
flag | 試一試 | flag_r | 試一試 |
gist_earth | 試一試 | gist_earth_r | 試一試 |
gist_gray | 試一試 | gist_gray_r | 試一試 |
gist_heat | 試一試 | gist_heat_r | 試一試 |
gist_ncar | 試一試 | gist_ncar_r | 試一試 |
gist_rainbow | 試一試 | gist_rainbow_r | 試一試 |
gist_stern | 試一試 | gist_stern_r | 試一試 |
gist_yarg | 試一試 | gist_yarg_r | 試一試 |
gnuplot | 試一試 | gnuplot_r | 試一試 |
gnuplot2 | 試一試 | gnuplot2_r | 試一試 |
gray | 試一試 | gray_r | 試一試 |
hot | 試一試 | hot_r | 試一試 |
hsv | 試一試 | hsv_r | 試一試 |
inferno | 試一試 | inferno_r | 試一試 |
jet | 試一試 | jet_r | 試一試 |
magma | 試一試 | magma_r | 試一試 |
nipy_spectral | 試一試 | nipy_spectral_r | 試一試 |
ocean | 試一試 | ocean_r | 試一試 |
pink | 試一試 | pink_r | 試一試 |
plasma | 試一試 | plasma_r | 試一試 |
prism | 試一試 | prism_r | 試一試 |
rainbow | 試一試 | rainbow_r | 試一試 |
seismic | 試一試 | seismic_r | 試一試 |
spring | 試一試 | spring_r | 試一試 |
summer | 試一試 | summer_r | 試一試 |
tab10 | 試一試 | tab10_r | 試一試 |
tab20 | 試一試 | tab20_r | 試一試 |
tab20b | 試一試 | tab20b_r | 試一試 |
tab20c | 試一試 | tab20c_r | 試一試 |
terrain | 試一試 | terrain_r | 試一試 |
twilight | 試一試 | twilight_r | 試一試 |
twilight_shifted | 試一試 | twilight_shifted_r | 試一試 |
viridis | 試一試 | viridis_r | 試一試 |
winter | 試一試 | winter_r | 試一試 |
大小
您可以使用 s
參數(shù)來改變點的大小。
就像顏色一樣,請確保 sizes
數(shù)組的長度與 x 軸和 y 軸的數(shù)組長度相同:
實例
為標記設置您自己的大?。?/p>
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75]) plt.scatter(x, y, s=sizes) plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

透明度
您可以使用 alpha
參數(shù)來調整點的透明度。
就像顏色一樣,請確保 sizes
數(shù)組的長度與 x 軸和 y 軸的數(shù)組長度相同:
實例
為標記設置您自己的大?。?/p>
import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75]) plt.scatter(x, y, s=sizes, alpha=0.5) plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:

結合顏色、大小和透明度
您可以將色彩映射與不同大小的點結合起來。如果點是透明的,這將得到最好的可視化效果:
實例
為 x 點、y 點、顏色和大小創(chuàng)建包含 100 個值的隨機數(shù)組:
import matplotlib.pyplot as plt import numpy as np x = np.random.randint(100, size=(100)) y = np.random.randint(100, size=(100)) colors = np.random.randint(100, size=(100)) sizes = 10 * np.random.randint(100, size=(100)) plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral') plt.colorbar() plt.show()運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
結果:
