scatter 函數原型
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)
基礎參數講解
- x, y → 散點的坐標,float or array-like, shape (n, )
- s → 散點的面積,float or array-like, shape (n, ), optional
- c → 散點的顏色(默認值為藍色,'b',其余顏色同plt.plot( ))
- marker → 散點樣式(默認值為實心圓,'o',其余樣式同plt.plot( ))
- alpha → 散點透明度([0, 1]之間的數,0表示完全透明,1則表示完全不透明)
- linewidths →散點的邊緣線寬
- edgecolors → 散點的邊緣顏色
例子1:
import matplotlib.pyplot as plt import numpy as np import random import matplotlib as mpl
x = np.random.randn(100) y = np.random.randn(100) plt.scatter(x,y)
例子2:
n = 20 # 生成20個點
x = np.random.rand(n) y = np.random.rand(n) plt.scatter(x, y, s=100, c='r', marker='*',alpha=0.3) plt.show()
例子3:
plt.scatter(x,y,s=np.power(10*x+10*y,2),c=np.random.randn(100),cmap=mpl.cm.RdYlBu,marker='o')
高級參數講解
- cmap → 指的是matplotlib.colors.Colormap,相當於多個調色盤的合集
- norm、vmin、vmax → 散點顏色亮度設置
例子4:
rng = np.random.RandomState(0) x = rng.randn(50) # 隨機產生50個X軸坐標
y = rng.randn(50) # 隨機產生50個Y軸坐標
colors = rng.rand(50) # 隨機產生50個用於顏色映射的數值
sizes = 700 * rng.rand(50) # 隨機產生50個用於改變散點面積的數值
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis') plt.show()
例子5:
x = np.random.randn(20) y = np.random.randn(20) plt.scatter(x,y,c=np.random.randn(20),s=np.power(10*x+10*y,2),cmap='viridis')
例子6:通過plt.colorbar( )顯示為顏色條
x = np.random.randn(50) y = np.random.randn(50) colors = np.random.rand(50) plt.scatter(x, y, c=colors, s=60, alpha=0.3, cmap='viridis') plt.colorbar() # 顯示顏色條
plt.show()
為更好的觀察數據,可重設顏色條的映射范圍
需要用到colors.Normalize( ),使用方法如下:
class matplotlib.colors.Normalize(vmin=None, vmax=None)
參數 vmin、vmax 分別為要設置的數據范圍的最小值和最大值(注意:設置之后,原來大於vmax的值被“拉低”成vmax;原來小於vmin的值被“拉高”成vmin)
from matplotlib import colors # 注意!為了調整“色盤”,需要導入colors
x = np.random.randn(50) y = np.random.randn(50) color = np.random.rand(50) changecolor = colors.Normalize(vmin=0.4, vmax=0.8) plt.scatter(x, y, c=color, s=60, alpha=0.3, cmap='viridis',norm=changecolor) plt.colorbar() # 顯示顏色條
plt.show()
看完點個關注唄!!(總結不易)