主要内容

具有可变行数的图表类

这个示例展示了如何定义一类图表,这些图表可以根据用户数据的大小显示任意数量的行。图中有多少列就显示多少行YData矩阵。对于每一条线,图表计算局部极值,并用圆形标记标明它们的位置。下面的代码演示了如何:

  • 定义两个称为PlotLineArrayExtremaArray分别存储线条和标记的对象。

  • 实现一个更新方法的内容PlotLineArrayExtremaArray属性与新对象。由于该方法执行所有的绘图和配置命令,因此设置方法是空的。这是一种创建任意数量行的简单方法。要了解如何通过重用现有的线对象更有效地创建此图表,请参见用于显示可变行数的优化图表类

要定义类,请将此代码复制到编辑器中,并使用名称保存它LocalExtremaChart.m在一个可写文件夹中。

classdefLocalExtremaChart < matlab.graphics.chartcontainer.ChartContainer% c = LocalExtremaChart('XData',X,'YData',Y,Name,Value,…)%为矩阵Y的每一列绘制一条在局部极值处有标记的直线。您还可以指定附加的名称-值参数,' markcolor '%和“MarkerSize”。属性XData(: 1)增加一倍=南YData(::)翻倍=南MarkerColor{validatecolor}= [1 0 0(1,1)的两倍= 5结束属性(Access = private,Transient,NonCopyable(1): matlab.graphics.chart.primitive.LineExtremaArray(1): matlab.graphics.chart.primitive.Line结束方法(访问=保护)函数设置(~)结束函数更新(obj)得到坐标轴ax = getAxes (obj);% Plot Lines和局部极值obj。PlotLineArray =情节(ax, obj.XData, obj.YData);(ax,“上”%复制x坐标向量以匹配YData的大小newx = repmat (obj.XData(:), 1,大小(obj.YData, 2));找出局部最小值和最大值,并绘制标记tfmin = islocalmin (obj.YData, 1);tfmax = islocalmax (obj.YData, 1);obj。ExtremaArray =情节(ax, newx (tfmin) obj.YData (tfmin),“o”,...newx (tfmax) obj.YData (tfmax),“o”,...“MarkerEdgeColor”,“没有”,...“MarkerFaceColor”obj。MarkerColor,...“MarkerSize”, obj.MarkerSize);(ax,“关闭”结束结束结束

在保存类文件之后,您可以创建图表的实例。例如:

x = linspace (0, 3);日元= cos (5 * x) / (1 + x ^ 2);y2 = cos (5 * x) / (1 + x ^ 3);y3 = sin (x) / 2;Y = [y1' y2' y3'];c = LocalExtremaChart (“XData”, x,“YData”, y);

更改标记的大小为8

c.MarkerSize = 8;

另请参阅

相关的话题