matlab hold on作用_MATLAB作图实例:67:具有自定义属性显示的图表类

本文提供了一个MATLAB代码示例,展示如何创建一个继承自ChartContainer基类的自定义图表类,该类包含特定属性如颜色和宽度,并重载getPropertyGroups方法。通过这个例子,读者可以学习到MATLAB图表开发的编码技巧,为自己的类设计打下基础。创建图表实例并展示自定义显示效果,适合MATLAB编程初学者参考。
摘要由CSDN通过智能技术生成

eb0bbe9d35b8ebeceda8c99507276d98.png

本示例说明如何仅使用属性子集来定义具有自定义属性的图表类。以下代码演示了如何重载matlab.mixin.CustomDisplay类的getPropertyGroups方法。该示例还演示了派生自matlab.graphics.chartcontainer.ChartContainer基类的图表基本编码模式。我们可以使用此示例来熟悉图表开发的编码技术,或作为计划开发的类的基础。

要定义该类,请将以下代码复制到编辑器中,并将其名称保存SmoothPlotCustomDisplay.m在可写文件夹中。

 classdef SmoothPlotCustomDisplay < matlab.graphics.chartcontainer.ChartContainer
     properties
         XData (1,:) double = NaN
         YData (1,:) double = NaN
         SmoothColor (1,3) double {mustBeGreaterThanOrEqual(SmoothColor,0),...
             mustBeLessThanOrEqual(SmoothColor,1)} = [0.9290 0.6940 0.1250]
         SmoothWidth (1,1) double = 2
     end
     properties(Access = private,Transient,NonCopyable)
         OriginalLine (1,1) matlab.graphics.chart.primitive.Line
         SmoothLine (1,1) matlab.graphics.chart.primitive.Line
     end
     
     methods(Access = protected)
         function setup(obj)
             % Get the axes
             ax = getAxes(obj);
             
             % Create the original and smooth lines
             obj.OriginalLine = plot(ax,NaN,NaN,'LineStyle',':');
             hold(ax,'on')
             obj.SmoothLine = plot(ax,NaN,NaN,'LineStyle','-',...
                 'Color',[0.9290 0.6940 0.1250],'LineWidth',2);
             hold(ax,'off')
         end
         function update(obj)
             % Update line data
             obj.OriginalLine.XData = obj.XData;
             obj.OriginalLine.YData = obj.YData;
             obj.SmoothLine.XData = obj.XData;
             obj.SmoothLine.YData = createSmoothData(obj);
             
             % Update line color and width
             obj.SmoothLine.Color = obj.SmoothColor;
             obj.SmoothLine.LineWidth = obj.SmoothWidth;
         end
         function propgrp = getPropertyGroups(obj)
             if ~isscalar(obj)
                 % List for array of objects
                 propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj);
                 
             else
                 % List for scalar object
                 propList = {'SmoothColor','XData','YData'};
                 propgrp = matlab.mixin.util.PropertyGroup(propList);
             end
         end
         function sm = createSmoothData(obj)
             % Calculate smoothed data
             v = ones(1,10)*0.1;
             sm = conv(obj.YData,v,'same');
         end
     end
 end

保存类文件后,您可以创建图表的实例。创建图表时,请省略分号以查看自定义显示。

 x = 1:1:100;
 y = 10*sin(x/15)+8*sin(10*x+0.5);
 c = SmoothPlotCustomDisplay('XData',x,'YData',y)
 c = 
 ​
   SmoothPlotCustomDisplay with properties:
 ​
     SmoothColor: [0.9290 0.6940 0.1250]
           XData: [1x100 double]
           YData: [1x100 double]
 ​
   Use GET to show all properties

e18252dbb2c8856fd139c6a4e95b4c86.png

注:本文根据MATLAB官网内容修改而成。

我推荐给你以下的视频教程,特点是没有PPT,不掺水,直接编程环境下的实操课程: 用360分钟了解MATLAB编程《MATLAB编程360》视频课程:

MATLAB编程360 - 网易云课堂study.163.com​study.163.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值