总结一下最近针对散点图的绘制学习到的scatter与gscatter函数以及当我们需要绘制散点图,并按照一定的规律对这些二维散点进行分类,分类结果用颜色来进行区分时,自己的一些想法。
scatter - 散点图
此 MATLAB 函数 在向量 x 和 y 指定的位置创建一个包含圆形的散点图。该类型的图形也称为气泡图。
scatter(x,y) x数据 y数据
scatter(x,y,sz) sz是圆圈的大小 可以用矩阵来设置对应x y点的圆圈大小
scatter(x,y,sz,c) c控制颜色,其颜色可直接赋值 r、 g 、k、 b等,也可以用矩阵来设置对应x、y点对应圆圈的颜色分布
scatter(___,'filled') 颜色填充
scatter(___,mkr)
scatter(___,Name,Value)
scatter(ax,___)
s = scatter(___)
gscatter - Scatter plot by group
This MATLAB function creates a scatter plot of x and y, grouped by group.
gscatter(x,y,group) x y是对应的坐标数据,group是数据的分类矩阵
gscatter(x,y,group,clr,sym,siz)
gscatter(x,y,group,clr,sym,siz,doleg)
gscatter(x,y,group,clr,sym,siz,doleg,xnam,ynam)
h = gscatter(...)
关于这两个函数的详细用法,大家可以直接help scatter、help gscatterr
这里,我根据实际情况做一些比较:
绘制散点图,并按照一定的规律对这些二维散点进行分类,分类结果用颜色来进行区分。
clc;
clear;
A=magic(6)
group=[1,2,3,3,2,3]
%scatter(x,y,sz,c) c控制颜色,其颜色可直接赋值 r、 g 、k、 b等,也可以用矩阵来设置对应x、y点对应圆圈的颜色分布
scatter(A(:,1),A(:,2),[],[1 2 3 3 2 1 ],'filled')
colorbar;
figure();
gscatter(A(:,1),A(:,2),group)
colorbar;
figure();
gscatter(A(:,1),A(:,2),[1,2,3,4,5,6])
colorbar;
figure();
gscatter(A(:,1),A(:,2),[1,2,3,4,5,6]);
colorbar;:
figure();
gscatter(A(:,1),A(:,2),group)
colorbar;
figure;
scatter(A(:,1),A(:,2),[],[1 2 3 3 2 1 ],‘filled’)
colorbar;
可以看到,区别的话就是:
gscatter函数画出来的图图例是根据自定义的group矩阵来进行区分的。 而利用scatter函数画出来的图,图例没有区分,但是散点图对应的颜色其实是当前颜色栏的默认等间隔划分。颜色栏的更改可以利用图窗界面进行操作:
关于自定义用法我推荐大家看看 [matlab中的colorbar用法(显示色阶的颜色栏)](https://blog.csdn.net/xuxinrk/article/details/80842120?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161107169716780299013632%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161107169716780299013632&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-80842120.pc_search_result_cache&utm_term=matlab%20%E4%BF%9D%E5%AD%98%E8%87%AA%E5%B7%B1%E7%9A%84%E9%A2%9C%E8%89%B2%E6%A0%8F)可以学习到如何自定义颜色栏、保存并调用。当然,颜色的配搭也是个技术活,理工科直男只能望而生畏了!!!
以上是我们借助matlab的函数调用参数来实现的多颜色变化,其实我还有个比较笨的方法:
具体使用时,可以利用for循环进行绘制,自定义的颜色、数据需要提前放入对应的矩阵中。这里我就只示范一下hold on的使用,跳过数据分类环节,颜色采用简单的r、g、b,可以看到该方案行得通。
A=magic(6)
scatter(A(1:2,1),A(1:2,2),'r','filled')
hold on;
scatter(A(3:4,1),A(3:4,2),'g','filled')
hold on;
scatter(A(5:6,1),A(5:6,2),'b','filled')
scatter3 - 三维散点图
此 MATLAB 函数 在向量 X、Y 和 Z 指定的位置显示圆圈。
scatter3(X,Y,Z)
scatter3(X,Y,Z,S)
scatter3(X,Y,Z,S,C)
scatter3(___,'filled')
scatter3(___,markertype)
scatter3(___,Name,Value)
scatter3(ax,___)
h = scatter3(___)
用法的话类似于scatter,只不过多了一维数据。
这里做一个简单的示例:
clc;
clear;
A=magic(6)
group=[1,2,3,3,2,3]
%scatter3(x,y,z,sz,c) c控制颜色,其颜色可直接赋值 r、 g 、k、 b等,也可以用矩阵来设置对应x、y点对应圆圈的颜色分布
scatter3(A(:,1),A(:,2),A(:,3),[],[1 2 3 3 2 1 ],'filled')
colorbar;
同样,颜色栏的修改可以参考上述二维散点图中的方法。
当然,二维散点图同样的思考方案也适用于三维散点图的绘制。
☀ 记录自己学习的同时,也希望能对大家有所帮助,欢迎留言交流!