实现目标:想根据两组数据进行绘制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