讀完此片文章你將獲得:
了解scatter函數的每個參數的含義;
掌握使用matplotlib畫散點圖的方法;
正文:
1.matplotlib的散點圖函數:
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)
2.參數:
x,y :形如shape(n,)的數組,可選值
s :點的大小(也就是面積)默認20
c: 點的顏色或顏色序列,默認藍色
marker: 形狀,可選值,默認是圓
cmap:顏色映射,如果c為浮點型數組時,camp是非常有用的。
vmin,vmax:vmin和vmax被用於與norm一起標准化亮度數據。如果沒有,則使用顏色數組的最小值和最大值。如果您通過一個規范實例,vmin和vmax將被忽略。
linewidths:線條的寬度
vert:如果marker值為0時,vert用來構建形狀。
alpha:標量,可選,默認值:無, 0(透明)和1(不透明)之間的alpha混合值
edgecolors:邊緣顏色或顏色序列,可選值,默認值:None
hold:為了同時在一個圖上畫多條曲線,可以使用hold關鍵字
拓展:get_cmap中取值可為:Possible values are: 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, PuBuGn, PuBuGn_r, PuBu_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, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r...其中末尾加r是顏色取反。
3.實例
①x,y參數的使用
import numpy as np import matplotlib.pyplot as plt N = 1000
#采用numpy的random函數,將會產生1000個1.0左右的實數 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y) plt.show()
② s(size):點面積,參數的使用實例
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y,s=x*20) plt.show()
③ c,marker圖案顏色及形狀參數
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) color = ['r','y','k','g','m'] plt.scatter(x, y,c=color,marker='>') plt.show()
④alpha 透明度,參數的使用
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y,alpha=0.5) plt.show()
⑤get_cmap()顏色漸變參數的使用,colorbar顏色條的使用
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) cm=plt.cm.get_cmap('RdYlBu') sc=plt.scatter(x, y,c=x,cmap=cm) plt.colorbar(sc) plt.show()
⑥linewidth圖案邊界寬度,edgecolar圖案邊界顏色
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y,linewidth=[1]*1000,edgecolors=['r','y','g','pink']) plt.show()