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