欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据可视化

程序员文章站 2024-02-12 18:12:52
...

title: 数据可视化
date: 2019-08-21 08:41:00
tags: matlab

一、图形绘制

1.离散数据及函数

X=1:20;
Y=log(X);
figure(2)
plot(X,Y,'O','MarkerSize',8)% 'O'表示画图的形状,8表示单个图标size

2.连续函数

matlab无法真正实现连续函数可视化,必须将连续函数在一组离散自变量上计算除函数结果

subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

X1=(0:12)*pi/6;
Y1=cos(3*X1);
X2=(0:360)*pi/180;
Y2=cos(3*X2);
figure(1)  %表示建立图形,第几幅图
subplot(2,2,1);  %z唉多个图中显示在第几个位置
plot(X1,Y1,'o','MarkerSize',3);
xlim([0 2*pi]);  %控制在哪个范围内显示

%figure(2)  %表示建立图形,第几幅图
subplot(2,2,2);  %z唉多个图中显示在第几个位置   要显示在一个图中就只能有一个figure
plot(X1,Y1,'LineWidth',1);  %直线了噢
xlim([0 2*pi]);  %控制在哪个范围内显示

subplot(2,2,3); 
plot(X2,Y2,'o','MarkerSize',3);  %‘O’可换成'-ro'就变成了红色的圈圈构图,
xlim([0 2*pi]); 
%gird on % 添加网格线
subplot(2,2,4); 
plot(X2,Y2,'LineWidth',1);
xlim([0 2*pi]); 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3YsBieF-1588087577562)(http://pvyyuu4id.bkt.clouddn.com/6.png)]

3.其他功能示例

x=-pi/2:0.01:pi/2;
y=x+sin(x)+exp(x);
figure(1)
%subplot(2,1,1);
plot(x,y,'-ro','MarkerSize',1) %红色线
grid on  %添加网格线
title('y的函数图像');
xlabel('x');
ylabel('y');
legend('y=x+sinx+e^{x}');  %添加函数标签

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZs3or9Y-1588087577566)(http://pvyyuu4id.bkt.clouddn.com/7.png)]

二、二维图像绘制

1.plot指令规范:

  1. plot(x,y)

  2. plot(y):y为一维实数数组,以1:n为横坐标

  3. plot(z):z为一维负数数组,以横轴为实轴,纵轴为虚轴绘制( real( z(j) ),imag( z(j) ) )

  4. plot(A):绘制矩阵A的对它的下标的图形

    A=magic(20);
    A(9:20,:)=[];%截取1~8行去绘图
    figure;
    plot(A)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UepskgzK-1588087577569)(http://pvyyuu4id.bkt.clouddn.com/8.png)]

  5. plot(x,A):矩阵A 对向量x的图形,A:m*n,x长度若为m,则绘制矩阵A的列对向量x的图形,x长度若为n,则绘制矩阵的行对向量x的图形,x可以是行向量或列向量

  6. plot(A,x):对矩阵A绘制向量x的图像,其他同上

  7. plot(A,B):对矩阵A的行绘制矩阵B的列的图形,如果A和B都是m*n的矩阵,则将绘制n条由m个有序对连成的曲线

    for i=1:5
        for j=1:6
            A(i,j)=i+j;
        end
    end
    A
    x=0.2:0.2:1;
    x
    figure(1)
    subplot(2,2,1);
    plot(A,x,'LineWidth',1.5);
    subplot(2,2,2);
    plot(x,A,'LineWidth',1.5);
    
    B=reshape(1:30,5,6)
    subplot(2,2,3);
    plot(A,B,'LineWidth',1.5);
    subplot(2,2,4);
    plot(B,A,'LineWidth',1.5);
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KE6dtMXK-1588087577575)(http://pvyyuu4id.bkt.clouddn.com/9.png)]

    A =
    
         2     3     4     5     6     7
         3     4     5     6     7     8
         4     5     6     7     8     9
         5     6     7     8     9    10
         6     7     8     9    10    11
    
    
    x =
    
        0.2000    0.4000    0.6000    0.8000    1.0000
    
    
    B =
    
         1     6    11    16    21    26
         2     7    12    17    22    27
         3     8    13    18    23    28
         4     9    14    19    24    29
         5    10    15    20    25    30
    
  8. plot(x,y,str):用str指定颜色和线型

  9. plot(x1,y1,str1,x2,y2,str2,…)

    j=sqrt(-1);% 奥运五环
    x=2;
    y=0.4;
    bluecircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y-x);
    blackcircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y);
    redcircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y+x);
    yellocircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(-j*y-x/2);
    greencircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(-j*y+x/2);
    figure(1)
    plot(bluecircle,'LineWidth',5);
    hold on;
    plot(blackcircle,'k','LineWidth',5);
    hold on;
    plot(redcircle,'r','LineWidth',5);
    hold on;
    plot(yellocircle,'y','LineWidth',5);
    hold on;
    plot(greencircle,'g','LineWidth',5);
    
    t=(0:pi/100:pi)';
    y1=sin(t)*[-1,1];
    y2=sin(t) .*sin(9*t);
    t3=pi*(0:9)/9;
    y3=sin(t3) .*sin(9*t3);
    plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')  % ‘bo'横向变成散点O,一共绘制了三条曲线
    axis([0,pi,-1,1])  %  设置坐标值范围
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3U8QfWf-1588087577580)(http://pvyyuu4id.bkt.clouddn.com/10.png)]

2.文字说明:

x=0:0.01*pi:pi*0.5;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'r','LineWidth',5);
hold on;
x=0.5*pi:0.01*pi:pi;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'y','LineWidth',5);
hold on;
x=-pi:0.01*pi:-pi*0.5;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'b','LineWidth',5);
hold on;
x=-pi*0.5:0.01*pi:0;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'g','LineWidth',5);

title('极坐标系');
text([1.5 -3 1.5 -3],[2 2 -2 -2],{'第一象限','第二象限','第三象限','第四象限'})%前面的坐标是用来确定放的位置的
legend({'[0 0.5\pi]','[0.5\pi \pi]','[\pi 1.5\pi]','[1.5\pi 2\pi]'}) % 添加图注
xlim([-5 5]); %x轴上下限设定
ylim([-5 5]);
plot([-4 4],[0 0],'k','LineWidth',3);% 画出横坐标轴
hold on; %保持之前的图像,并可以继续绘制新图像
%hold off; %会刷新当前图像
plot([0 0],[-4 4],'k','LineWidth',3);% 画出纵坐标轴
hold on;
%axis off %取消掉了自带的坐标,这个最后在动,因为上面涉及到的坐标都是根据系统坐标定的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ln6eiJQI-1588087577583)(http://pvyyuu4id.bkt.clouddn.com/11.png)]

3.线型、标记和颜色

(1)线型

线型代号 表示线型
- 实线
虚线
-. 点画线
: 点线
none 无线

(2)标记

标记代号 表示标记
.
* 星号
square 正方形
diamond 菱形
pentagram 五角星形
hexagram 六角星形
none 无点
o o
+ +
x x
< 顶点指向左边的三角形
> 指向右边
^ 正三角形
v 倒三角形

(3)颜色

颜色代号 表示颜色
g 绿色
m 品红色
b 蓝色
c 灰色
w 白色
r 红色
k 黑色
y 黄色

4.双坐标轴绘制

plotyy(X1,Y1,X2,Y2);以左右不同的纵轴绘制两条曲线

plotyy(X1,Y1,X2,Y2,Fun);都以Fun指定的形式绘制

plotyy(X1,Y1,X2,Y2,Fun1,Fun2);分别以Fun1,Fun2指定形式绘制

5.fplot绘图指令

可以通过matlab平台内部设置的自适应算法动态决定自变量的离散间隔

  1. fplot(f,limits) limits表示为[lx rx]或[lx rx;ly ry]
  2. fplot(f,limits,LineSpec) LineSpec表示规定的线型,标记,颜色等
  3. fplot(f,limits,tol)在limits定义的范围内,在tol规定的相对误差范围内,绘制f函数图像
  4. fplot(f,limits,tol,LineSpec)
  5. fplot(f,limits,n)至少绘制n+1个点

6.ezplot绘图指令

用于绘制在某一自变量区域内的图形

  1. ezplot(f)按matlab默认方式(即-2pi<x<2pi)绘制函数
  2. ezplot(f,[min,max]),x方向变量按[min max],y方向变量按默认
  3. ezplot(f,[xmin,xmax,ymin,ymax])
  4. ezplot(x,y)按默认方式绘制函数x,y
  5. ezplot(x,y,[min,max])按自变量范围为[min max]
ezplot('sin(x)^2+4*cos(y)^2=4',[-5 5 -1 1]);%函数用' '起来
axis square%让坐标轴呈方形!

7.特殊坐标轴绘图

直角坐标系和极坐标系均为线性刻度

当数据呈指数型变化规律时,用线性刻度无法清晰的表示出低次幂的部分数据,可以通过双坐标绘图,对指数数据进行局部放大。

更简洁的方式是:使用semilogx函数、semilogy函数、loglog函数对对数数据进行处理

  1. semilogx函数(使用与plot相同)

    semilogx(Y)

    semilogx(X1,Y1,X2,Y2,…)

    semilogx(X1,Y1,LineSpec1,X2,Y2,LineSpec2…)

    semilogx(…,‘PropertyName’,PropertyValue,…)

    x=10 .^ (0.1:0.1:4)
    y=1 ./ (x+1000)
    figure
    subplot(1,2,1);
    semilogx(x,y,'+','MarkerSize',5,'LineWidth',2);
    title('y=(x+1000)^{-1}')
    
    subplot(1,2,2);
    plot(x,y,'+','MarkerSize',5,'LineWidth',2)
    title('y=(x+1000)^{-1}')
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9uUZRqWL-1588087577587)(http://pvyyuu4id.bkt.clouddn.com/12.jpg)]

    x =
    
       1.0e+04 *
    
      1 至 10 列
    
        0.0001    0.0002    0.0002    0.0003    0.0003    0.0004    0.0005    0.0006    0.0008    0.0010
    
      11 至 20 列
    
        0.0013    0.0016    0.0020    0.0025    0.0032    0.0040    0.0050    0.0063    0.0079    0.0100
    
      21 至 30 列
    
        0.0126    0.0158    0.0200    0.0251    0.0316    0.0398    0.0501    0.0631    0.0794    0.1000
    
      31 至 40 列
    
        0.1259    0.1585    0.1995    0.2512    0.3162    0.3981    0.5012    0.6310    0.7943    1.0000
    
    
  2. semilogy函数

    调用格式同上,绘制图形时,y轴采用对数坐标

  3. loglog函数

    调用格式同上,x,y轴均采用对数坐标

    a=0.1:0.1:5;
    x=log10(a);
    y=10 .^a;
    figure
    subplot(1,2,1);
    loglog(x,y,'+','MarkerSize',5,'LineWidth',2);
    title('lgy=10^x');
    subplot(1,2,2);
    plot(x,y,'+','MarkerSize',5,'LineWidth',2);
    title('lgy=10^x');
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWgPrJaH-1588087577591)(http://pvyyuu4id.bkt.clouddn.com/13.png)]

8.二维特殊图形绘制

函数名 说明
area 填充绘图
bar 条形图
comet 彗星图
errorbar 误差带图
ezplot 简单绘制函数图
ezpolar 简单绘制极坐标图
feather 矢量图
fill 多边形填充
gplot 拓扑图
compass 与feather功能类似的矢量图
fplot 函数绘制
hist 柱状图
pareto Pareto图
pie 饼状图
plotmatrix 分散矩阵绘制
ribbon 三维图的二维条状显示
scatter 散射图
stem 离散序列火柴杆状图
stairs 阶梯图
rose 极坐标系下的柱状图
quiver 向量场
barh 水平条形图

注意:使用plot的时候,是要界定横坐标范围和刻度的

三、三维和四维图像绘制

plot3(X,Y,Z,'PropertyName',PropertyValue),X,Y,Z为同维向量时,绘制以X,Y,Z为x,y,z坐标的三维曲线,是同维矩阵的时候,绘制多条曲线,曲线条数为矩阵列数,PropertyName规定某一属性

注意:plot3用来表现的是单参数的三维曲线,而非 双参数的三维指令

相关标签: matlab