實現目標:想根據兩組數據進行繪制scatter,一組數值控制節點大小,另一組數值控制節點顏色的深淺。
數據准備:這里我要繪制64*64大小的散點圖
第一步:x,y為scatter中點的位置坐標(可自定義x,y,其中x,y可以是對應點所組成的向量形式)
那么x每一行都對應y從1-64,所以x矩陣為第幾行則該行就是幾,第一行64個1,第二行64個2.......以此類推到64行
在matlab中初始化x向量
1 x=0 2 k=1 3 for j=1:64 4 for i=1:64 5 xspike(i)=k 6 end 7 x=[x,xspike] 8 k=k+1 9 end 10 x(1)=[] 11 % 最后需要把x,y第一列0刪除
如圖所示x向量形式:
y向量則是每一行都是從1到64
1 y=0 2 for j=1:64 3 for i=1:64 4 yspike(i)=i 5 end 6 y=[y,yspike] 7 end
8 y(1)=[]
如圖所示,y向量表示形式
以上確定好scatter中點的位置坐標啦
第二步:初始化控制點大小s的向量,當然可以是所有點統一定義一個數值大小,這里我想根據數值大小不同繪制大小不同的scatter點
我原始數據中數值過大,所以我用范圍規定了點的大小
1 for i=1:4096 2 if(sz8(i)<350) 3 num8(i)=1 4 elseif(350<=sz8(i)&&sz8(i)<750) 5 num8(i)=4 6 elseif(750<=sz8(i)&&sz8(i)<=1000) 7 num8(i)=7 8 elseif(sz8(i)>1000) 9 num8(i)=10 10 end 11 end
第三步:初始化c向量,根據數值大小不同控制點顏色的深淺
以上四個向量都定義完,就可以繪制scatter圖形了。
用matlab繪制(可以進行help scatter查看更多繪圖方法):
scatter(x,y,s,p,'filled')
由於matlab中顏色選擇受限,所以選擇了用python繪制
sc=plt.scatter(x, y, s=sz, c=c, marker='o',cmap='Blues_r')#x,y表示點的坐標,s為點大小的向量,當然s=20這樣定義為統一大小,c為顏色深淺向量,cmap顏色設置,這里是數值越大顏色越淺 plt.colorbar(sc) plt.show()
將cmap中的“Blues_r”換成“Blues”可將顏色條調換,現在顏色條表示數值越小顏色越淺。
sc=plt.scatter(x, y, s=sz, c=c, marker='o',cmap='Blues') plt.colorbar(sc) plt.show()
Python 畫圖常用顏色 - 單色、漸變色、混色 - 夠用_Not Found黃小包-CSDN博客 : https://blog.csdn.net/weixin_40683253/article/details/87370127
Python 畫圖常用點的形狀,Matplotlib 設置參數marker的值 - o + - ★☆►◁ - 夠用_Not Found黃小包-CSDN博客: https://blog.csdn.net/weixin_40683253/article/details/87375020
python繪圖基礎—scatter用法_xiaobaicai4552的博客-CSDN博客: https://blog.csdn.net/xiaobaicai4552/article/details/79065990