使用matplotlib.pyplot中scatter()繪制散點圖


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的水平平面上;第二種就是取和xsys同樣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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM