Matplotlib 散點(diǎn)圖

2023-02-28 14:34 更新

我們可以使用 pyplot 中的 scatter() 方法來(lái)繪制散點(diǎn)圖。

scatter() 方法語(yǔ)法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

參數(shù)說明:

x,y:長(zhǎng)度相同的數(shù)組,也就是我們即將繪制散點(diǎn)圖的數(shù)據(jù)點(diǎn),輸入數(shù)據(jù)。

s:點(diǎn)的大小,默認(rèn) 20,也可以是個(gè)數(shù)組,數(shù)組每個(gè)參數(shù)為對(duì)應(yīng)點(diǎn)的大小。

c:點(diǎn)的顏色,默認(rèn)藍(lán)色 'b',也可以是個(gè) RGB 或 RGBA 二維行數(shù)組。

marker:點(diǎn)的樣式,默認(rèn)小圓圈 'o'。

cmap:Colormap,默認(rèn) None,標(biāo)量或者是一個(gè) colormap 的名字,只有 c 是一個(gè)浮點(diǎn)數(shù)數(shù)組的時(shí)才使用。如果沒有申明就是 image.cmap。

norm:Normalize,默認(rèn) None,數(shù)據(jù)亮度在 0-1 之間,只有 c 是一個(gè)浮點(diǎn)數(shù)的數(shù)組的時(shí)才使用。

vmin,vmax::亮度設(shè)置,在 norm 參數(shù)存在時(shí)會(huì)忽略。

alpha::透明度設(shè)置,0-1 之間,默認(rèn) None,即不透明。

linewidths::標(biāo)記點(diǎn)的長(zhǎng)度。

edgecolors::顏色或顏色序列,默認(rèn)為 'face',可選值有 'face', 'none', None。

plotnonfinite::布爾值,設(shè)置是否使用非限定的 c ( inf, -inf 或 nan) 繪制點(diǎn)。

**kwargs::其他參數(shù)。

以下實(shí)例 scatter() 函數(shù)接收長(zhǎng)度相同的數(shù)組參數(shù),一個(gè)用于 x 軸的值,另一個(gè)用于 y 軸上的值:

實(shí)例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

plt.scatter(x, y)
plt.show()

顯示結(jié)果如下:

設(shè)置圖標(biāo)大小:

實(shí)例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.scatter(x, y, s=sizes)
plt.show()

顯示結(jié)果如下:

自定義點(diǎn)的顏色:

實(shí)例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

plt.scatter(x, y, c=colors)
plt.show()

顯示結(jié)果如下:

設(shè)置兩組散點(diǎn)圖:

實(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()

顯示結(jié)果如下:

使用隨機(jī)數(shù)來(lái)設(shè)置散點(diǎn)圖:

實(shí)例

import numpy as np
import matplotlib.pyplot as plt

# 隨機(jī)數(shù)生成器的種子
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 設(shè)置顏色及透明度

plt.title("W3Cschool Scatter Test") # 設(shè)置標(biāo)題

plt.show()

顯示結(jié)果如下:


顏色條 Colormap

Matplotlib 模塊提供了很多可用的顏色條。

顏色條就像一個(gè)顏色列表,其中每種顏色都有一個(gè)范圍從 0 到 100 的值。

下面是一個(gè)顏色條的例子:

設(shè)置顏色條需要使用? cmap ?參數(shù),默認(rèn)值為 ?'viridis'?,之后顏色值設(shè)置為 0 到 100 的數(shù)組。

實(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()

顯示結(jié)果如下:

如果要顯示顏色條,需要使用? plt.colorbar() ?方法:

實(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.colorbar()

plt.show()

顯示結(jié)果如下:

換個(gè)顏色條參數(shù), cmap 設(shè)置為 ?afmhot_r?:

實(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='afmhot_r')
plt.colorbar()
plt.show()

顯示結(jié)果如下:

顏色條參數(shù)值可以是以下值:

顏色名稱   保留關(guān)鍵字
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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)