matplotlib.pyplot.scatter( )绘制散点图与双月形图
matplotlib.pyplot里的函數scatter( )用于繪制散點圖。學習Matplotlib繪圖其實就是學習繪圖函數中的參數,不同的參數搭配會產生不同的化學效應!
scatter( )函數包含的參數如下所示:
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)
(1)基本參數講解
x, y → 各散點的橫坐標與縱坐標,x與y應當是向量,向量的大小要相同
s → 各散點的面積,可以為固定值,代表所有散點面積相同,也可以為一向量,向量的大小與x相同,代表不同的散點面積不同
c → 散點的顏色(默認值為藍色,'b'),可以為固定值,代表所有散點顏色相同,也可以為一向量,向量的大小與x相同,代表不同的散點顏色不同
marker → 散點樣式(默認值為實心圓,'o')
alpha → 散點透明度([0, 1]之間的數,0表示完全透明,1則表示完全不透明)
linewidths →散點的邊緣線寬
edgecolors → 散點的邊緣顏色
cmap → 指的是matplotlib.colors.Colormap,相當于多個調色盤的合集
norm、vmin、vmax → 散點顏色亮度設置
效果圖如下:
?顏色映射的這維屬性數據(顏色條表示),其值主要集中于[0.4, 0.8]之間,參數 vmin、vmax 分別為要設置的數據范圍的最小值和最大值(注意:設置之后,原來大于vmax的值被“拉低”成vmax;原來小于vmin的值被“拉高”成vmin)。代碼和可視化結果圖如下所示:
import matplotlib.pyplot as plt import numpy as nprng = np.random.RandomState(2)#如果不傳參數,則每次運行得到的隨機數不同,傳了參數后,每次運行得到的隨機數相同 x = rng.randn(50) # 隨機產生50個X軸坐標,各坐標值在[0,1]之間 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',vmin=0.4, vmax=0.8) plt.colorbar() plt.show()?用scatter函數繪制雙月形數據集# make_moons是函數用來生成數據集
from sklearn import datasets
x,y = datasets.make_moons(n_samples=800,noise=0.3,shuffle=True,random_state=42)
x,y = datasets.make_moons(n_samples=800,noise=None,shuffle=False,random_state=None)
基中函數的具體參數如下:
n_samples:生成樣本的數量,默認是100個樣本
shuffle:數據是否打亂
noise:默認是false,數據集是否加入高斯噪聲
random_state:生成隨機種子,給定一個int型數據,能夠保證每次生成數據相同。
效果圖如下:
如果想讓不同的類別顯示不同的形狀,可以針對不同的類別各畫一次,每次用不同的點的形狀即可,代碼及效果圖如下:
from sklearn import datasets import matplotlib.pyplot as plt import numpy as np x, y = datasets.make_moons(noise=0.05) counts = np.bincount(y) #統計每一類別的樣本個數,此例只有兩個類別,每類各50個樣本 x0 = np.zeros((counts[0],x.shape[1])) x1 = np.zeros((counts[1],x.shape[1])) index1 = 0 index2 = 0 for i in range(x.shape[0]):if y[i]==0:x0[index1] = x[i,:]index1 = index1+1elif y[i] == 1:x1[index2] = x[i]index2 = index2+1plt.scatter(x0[:,0], x0[:,1],c='r',marker='*') plt.scatter(x1[:,0], x1[:,1],c='g',marker='<')plt.show()總結
以上是生活随笔為你收集整理的matplotlib.pyplot.scatter( )绘制散点图与双月形图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北华大学计算机程序设计算法提高训练营个人
- 下一篇: 【转载】CSRF攻击与防御(写得非常好)