Main Content

matlab.graphics.chartcontainer.mixin.Colorbar 类

命名空间: matlab.graphics.chartcontainer.mixin

向图容器子类添加颜色栏支持

自 R2019b 起

描述

matlab.graphics.chartcontainer.mixin.Colorbar 是用于为从 matlab.graphics.chartcontainer.ChartContainer 继承的图添加颜色栏支持的类。通过从此类继承,您可以在图中显示颜色栏。您的用户可以选择图窗菜单栏或图窗工具栏中的选项来显示或隐藏该颜色栏。

使用以下语法为您的图启用颜色栏支持:

classdef MyChart < matlab.graphics.chartcontainer.ChartContainer & ...
                   matlab.graphics.chartcontainer.mixin.Colorbar
  ...
end

matlab.graphics.chartcontainer.mixin.Colorbar 类是一个 handle 类。

类属性

Abstract
true
HandleCompatible
true

有关类属性的信息,请参阅类属性

属性

全部展开

颜色栏可见性,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

当此属性设置为 'on' 时,颜色栏在图中可见。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

方法

全部展开

示例

全部折叠

定义一个名为 SurfImagePlot 的类,该类显示一个曲面,曲面下方有一个图像。

要定义该类,请创建一个包含以下代码的、名为 SurfImagePlot.m 的文件。此类的 setup 方法执行以下任务:

  • 创建一个 Surface 对象并在 ZData 上使用一定的偏移量,以提供足够的空间来显示图像

  • 创建一个 Image 对象

  • 配置坐标区

  • 通过将 ColorbarVisible 属性设置为 'on',使颜色栏可见

classdef SurfImagePlot < matlab.graphics.chartcontainer.ChartContainer & ...
        matlab.graphics.chartcontainer.mixin.Colorbar
    
    properties
        ZData (:,:) double = []
        Offset (1,1) double = 10
        Colormap (:,3) double {mustBeGreaterThanOrEqual(Colormap,0),...
            mustBeLessThanOrEqual(Colormap,1)} = parula
    end
    properties(Access = private,Transient,NonCopyable)
        Surface (1,1) matlab.graphics.chart.primitive.Surface
        Image (1,1) matlab.graphics.primitive.Image
    end
    
    methods(Access = protected)
        function setup(obj)
            % Get the axes
            ax = getAxes(obj);
            
            % Create surface and image objects
            obj.Surface = surf(ax,[],[],[]);
            hold(ax,'on')
            obj.Image = imagesc(ax,[]);
            
            % Configure axes, make colorbar visible
            view(ax,3)
            axis(ax,'tight')
            grid(ax,'on')
            obj.ColorbarVisible = 'on';
            hold(ax,'off')
        end
        function update(obj)
            % Update Data and Colormap
            ax = getAxes(obj);
            [r,c] = size(obj.ZData);
            [X,Y] = meshgrid(1:c,1:r);
            obj.Surface.XData = X;
            obj.Surface.YData = Y;
            obj.Surface.ZData = obj.ZData + obj.Offset;
            obj.Image.CData = obj.ZData;
            colormap(ax,obj.Colormap)
        end
    end
end

接下来,将矩阵 Z 定义为曲面的 z 坐标。调用 ChartContainer 类提供的 SurfImagePlot 构造函数方法来绘制 Z。指定 'ZData' 名称-值对组参量,并以 c 形式返回对象。

[X,Y] = meshgrid(-10:1:10);
Z = X.^2 + Y.^2;
c = SurfImagePlot('ZData',Z)
c = 

  SurfImagePlot with properties:

       ZData: [21x21 double]
      Offset: 10
    Colormap: [256x3 double]
    Position: [0.1300 0.1100 0.7232 0.8150]
       Units: 'normalized'

  Use GET to show all properties

使用 c 将颜色图更改为 cool

c.Colormap = cool;

版本历史记录

在 R2019b 中推出