• 三个实例搞定MATLAb二维曲线图(plot绘制图像)


    https://blog.csdn.net/zyqblog/article/details/60965988

    实例一:多子图、命令plot、图形标识(图名和横纵坐标)演示






    • 多子图:subplot (m,n,k) 一个窗口划分成mn个小块,每个小块存放一个子图,k是子图的编号。 编号规则是: 从左到右边,从上到下依次编号。


    %% 定义函数
      t = (0:pi/50:2*pi)';          % 列向量  101*1
      k = (0.4 :0.1 :1);            % 行向量  1*7
      y = cos(t)*k ;                % 矩阵101*7
    %% 画第一幅子图
      subplot(2,2,1);       %操作两幅子图中的第一幅  
      plot(t,y,'r','LineWidth',1.5 );    %画图,t是横坐标,y是纵坐标,属性    lineWidth的值是1.5(即线宽度为1.5), 颜色为红色(手动指定)
      title('y随t的变化图');            %图名
      xlabel('t');                    %横坐标轴名
      ylabel('y = cos(t)*k ');         %纵坐标轴名
    %%  画第二幅子图
      subplot(2,2,2);       %操作两幅子图中的第二幅  
      plot(k,y,'LineStyle',':');    % 线的形状是虚点线,色彩是彩色的,当有多条线,且不指定时,按照默认的色彩次序用细实线绘制多条曲线
      title('y随k的变化图');           %图名
      xlabel('k');                    %横坐标轴名
      ylabel('y = cos(t)*k ');        %纵坐标轴名
    %% 画第三幅子图
      subplot(2,2,3);       %操作两幅子图中的第三幅   
      plot(t,y,k,y , 'Marker','*','MarkerSize',7.0);    % 一幅图上有两个数据集,设置数据点形为*,大小是7.0
      title('y随两种参数的两种变化图');         %图名
      xlabel('k');                          %横坐标轴名
      ylabel('y = cos(t)*k ');              %纵坐标轴名


     

    实例二:坐标轴的控制、图形标识(图例、注释)、多次叠绘、图像句柄、分格线






    • 多次叠绘: 在已有图像的上再绘制图像
    %% 定义函数
    x = 0:0.01:2*pi;
    y1 = sin(x);
    y2 = cos(x);
    %% 画图/多次叠绘
    F1 = plot(x,y2)  %设置图像的句柄为F1
    set(F1,'LineStyle','-.','color','b');%对F1的图像进行设置
    hold on         %在y1图像的基础上,再绘制y2图像
    F2 = plot(x,y1,'r')    %设置图像的句柄为F1
    set(F2,'color','r');    %对F1的图像进行设置
    %% 加注释(完全可以用图形化界面工具来做)
    text(3,0.1,'{fontsize{15}leftarrow这个地方好陡峭}');
    %% 加网格
    grid on;   %应用分格线(网格)
    set(gca,'xtick',[0:0.5:7]) ;    % 修改网格间隔。获得gca句柄(坐标轴的句柄),设置xtick(x轴网格)从0~7,间隔是0.5
    set(gca,'ytick',[-1 ;-0.6;0;0.6;1]);   %固定网格线
    %% 加图例(完全可以用图形化界面工具来做)
    h = legend([F2,F1],'sin(x)','cos(x)');      %加一个图例,句柄h。 指明F2是sin(x),F1是cos(x)
    set(h,'fontsize',16,'color','k','edgecolor','r','textcolor','w') ;  %对图例h进行精细设置
    %% 坐标轴控制
    axis([0,2*pi-0.4,-0.8,1]); %将横坐标范围设定到0~2*pi-0.4,纵坐标范围设定到-0.8~1
    %% 横纵坐标的名称
    title('{fontsize{14}fsin(x)和cos(x)的曲线}');       
    xlabel('{fontsize{14}ft
    ightarrow}')    ;
    ylabel('{fontsize{14}fy}')    ;
    %% 拆分图例,能够让图例中的F1和F2分离开,各自都能相互移动
    ax1 = axes('position',get(gca,'position'),'visible','off');
    legend(ax1,F1,'sin(x)','location','northwest');
    ax2 = axes('position',get(gca,'position'),'visible','off');
    legend(ax2,F2,'cos(x)','location','northeast');



    实例三:双纵坐标、新建图像






    • 双纵坐标: 一个x自变量,有两个y函数对于之对应。
    • 新建图像: 在软件打开一张图像后,运行下一个代码,再打开一张图像,而不是把原来的图像关闭
    %% 定义函数
    x = 0:0.01:20;
    y1 = 200*exp(-0.05*x).*sin(x);
    y2 = 0.8*exp(-0.5*x).*sin(10*x);
    %% 画图
    figure;  % 新建一个图像
    [AX,H1,H2] = plotyy(x,y1,x,y2); %返回在AX中创建的两个轴的句柄和来自H1和H2中的每个图的图形对象的句柄。 AX(1)是左轴,AX(2)是右轴。
    %% 设置两个纵坐标的名称
    set(get(AX(1),'ylabel'),'String','Slow Decay')  %第一个纵坐标的名称
    set(get(AX(2),'ylabel'),'String','Fast Decay')   %第二 个纵坐标的名称
    %上述两行代码可以用以下两行代码替换。
    %ylabel(AX(1),'Slow Decay') % left y-axis
    %ylabel(AX(2),'Fast Decay') % right y-axis
    %% 设置两个纵坐标的样式
    set(H1,'LineStyle','--')      %设置虚线
    set(H2,'LineStyle',':')       %设置为点线
    %% 设置标题和横坐标
    xlabel('Time (musec)')            %横坐标的名称
    title('Multiple Decay Rates')  %标题
     

    ·---------------------------------------补充201904-----------------------------------------------------------------

    一个小参考绘图代码

    figure
    x=1:10:200 ;
    f1 = semilogy(x,t20(1:10:200,1));  
    hold on ;
    f2 = semilogy(x,t20(1:10:200,2));
    hold on ;
    f3 = semilogy(x,t20(1:10:200,3));
    set(f1,'Color','r',...     
           'LineStyle','-',...
           'LineWidth',1.5,...
           'Marker','^',...
           'MarkerSize',10 ...
       );
    set(f2,'Color','k',...      
           'LineStyle','-',...
           'LineWidth',1.5,...
           'Marker','o',...
           'MarkerSize',10 ...
       );
    set(f3,'Color','b',...      
           'LineStyle','-',...
           'LineWidth',1.5,...
           'Marker','d',...
           'MarkerSize',10 ...
       );
    h = legend([f1,f2,f3],'HB-GOA','IGPSO','BASFPA'); %设置图例
    set(h,'fontsize',15) ; 
    set(f1,'defaultfigurecolor','w') % 设置周围颜色为白色
    set(gca,'FontSize',13);  % 设置坐标轴刻度和坐标轴文字的大小
    xlabel('迭代次数','FontSize',20) ; % 重新设置坐标轴文字的大小
    ylabel('目标函数值','FontSize',20) ;
  • 相关阅读:
    MySQL高可用架构之MHA
    DateTimeFormatter
    mysql实现行拼接、列拼接
    图形数据库 Neo4j 开发实战
    除了信号触发线程与接收者线程相同的情况能直接调用到slot,其它情况都依赖事件机制(解决上面代码收不到信号的问题其实很简单,在线程的run();函数中添加一个事件循环就可以了,即加入一句exec();),信号槽不就是一个回调函数嘛
    moveToThread的根本目的还是为了处理QObject的事件循环(如果为空指针的话,当前对象的所有的事件都不处理了),看官方说明就知道了
    专访紫光刁石京:资本追逐下产业“过热” 人才培养需塌下心(企业这么多年好不容易积累起来的人才队伍,被别人这么一挖,一切付诸东流)
    为QML创建C++插件(下载)
    Qt Quick Controls 与 Qt Quick Controls 2的区别(详细对照)
    asp.net core zipkin
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/15209350.html
Copyright © 2020-2023  润新知