Matlab绘图(二)—变色散点图二维、三维绘制

Matlab绘图(二)—散点图绘制

    • 前言
      • 二维散点图
        • scatter函数
        • gscatterr函数
        • 思考
      • 三维散点图
        • scatter3函数

前言

总结一下最近针对散点图的绘制学习到的scatter与gscatter函数以及当我们需要绘制散点图,并按照一定的规律对这些二维散点进行分类,分类结果用颜色来进行区分时,自己的一些想法。

二维散点图

scatter函数

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(___)

gscatterr函数

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;:
Matlab绘图(二)—变色散点图二维、三维绘制_第1张图片
figure();
gscatter(A(:,1),A(:,2),group)
colorbar;
Matlab绘图(二)—变色散点图二维、三维绘制_第2张图片
figure;
scatter(A(:,1),A(:,2),[],[1 2 3 3 2 1 ],‘filled’)
colorbar;
Matlab绘图(二)—变色散点图二维、三维绘制_第3张图片
可以看到,区别的话就是:

gscatter函数画出来的图图例是根据自定义的group矩阵来进行区分的。 而利用scatter函数画出来的图,图例没有区分,但是散点图对应的颜色其实是当前颜色栏的默认等间隔划分。颜色栏的更改可以利用图窗界面进行操作:

  1. 点击箭头(编辑绘图)
  2. 属性编辑器中选择颜色图(默认有14种颜色图,支持自定义)

Matlab绘图(二)—变色散点图二维、三维绘制_第4张图片
Matlab绘图(二)—变色散点图二维、三维绘制_第5张图片

Matlab绘图(二)—变色散点图二维、三维绘制_第6张图片

  关于自定义用法我推荐大家看看  [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的函数调用参数来实现的多颜色变化,其实我还有个比较笨的方法:

  1. 通过循环和判断条件提前把数据做好分类
  2. 画图时利用for循环和hold on进行多次绘制
  3. 最终显示在一张图上

具体使用时,可以利用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')

Matlab绘图(二)—变色散点图二维、三维绘制_第7张图片

三维散点图

scatter3函数

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;

Matlab绘图(二)—变色散点图二维、三维绘制_第8张图片
同样,颜色栏的修改可以参考上述二维散点图中的方法。
当然,二维散点图同样的思考方案也适用于三维散点图的绘制。


☀ 记录自己学习的同时,也希望能对大家有所帮助,欢迎留言交流!


你可能感兴趣的:(Matlab,绘图)