1、二維散點圖
二維散點圖的函數原型:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
x
,y
對應了平面點的位置,s
控制點大小,c
對應顏色指示值,也就是如果采用了漸變色的話,我們設置c=x
就能使得點的顏色根據點的x
值變化,cmap
調整漸變色或者顏色列表的種類marker
控制點的形狀alpha
控制點的透明度,我喜歡在數據量大的時候設置較小的alpha
值,然后調整一下s
值,這樣產生重疊效果使得數據的聚集特征會很好地顯示出來:看一下效果
第一個設置不透明
fig = plt.figure() x = np.random.randn(10000) y = np.random.randn(10000) plt.scatter(x, y, c='b') plt.scatter(x+4, y, c='r')
第二個設置透明
fig = plt.figure() x = np.random.randn(10000) y = np.random.randn(10000) plt.scatter(x, y, c='b', alpha=0.05) plt.scatter(x+4, y, c='r', alpha=0.05)
然后調整下點的大小
fig = plt.figure() x = np.random.randn(10000) y = np.random.randn(10000) plt.scatter(x, y, c='b', alpha=0.05, s=10) plt.scatter(x+4, y, c='r', alpha=0.05, s=10)
2、三維散點圖
三維散點圖函數原型:
p3d.Axes3D.scatter( xs, ys, zs=0, zdir=’z’, s=20, c=None, depthshade=True, *args, **kwargs ) p3d.Axes3D.scatter3D( xs, ys, zs=0, zdir=’z’, s=20, c=None, depthshade=True, *args, **kwargs)
三維散點圖在p3d.Axes3D中有兩個版本,但效果一樣:
xs
,ys
代表點的x
,y
軸坐標zs
代表z
軸坐標,但有兩種形式,第一種就是取一個標量,函數原型里默認就是一個標量0
,也就是默認所有的點都畫在一個z=0
的水平平面上;第二種就是取和xs
、ys
同樣shape
的數組,從而指定每個點的實際z軸坐標,如下:
zs默認為0;
fig = plt.figure() ax = Axes3D(fig) x = np.random.randn(10000) y = np.random.randn(10000) ax.scatter(x, y, c='b', s=10, alpha=0.05) ax.scatter(x+4, y, c='r', s=10, alpha=0.05)
zs取一個標量
fig = plt.figure() ax = Axes3D(fig) x = np.random.randn(10000) y = np.random.randn(10000) ax.scatter(x, y, c='b', s=10, alpha=0.05) ax.scatter(x+4, y, 2, c='r', s=10, alpha=0.05)
zs取一個數組
fig = plt.figure() ax = Axes3D(fig) z = 6*np.random.randn(5000) x = np.sin(z) y = np.cos(z) ax.scatter(x, y, z, c='r', s=10, alpha=0.05)
參考:https://www.jianshu.com/p/9390b49ad993