首页 > 解决方案 > 在 Matlab 中绘制一个单元格

问题描述

我有一个单元格fit1,它是维度的50x1

单元格的每个条目都是一个矩阵52x50

当我绘制它时:

for ii=1:k
    hold On
    plot(fit1{ii},'b')
    xlim([-1100,5000])
    ylim([-5,20])
    legend('hide')
end

我得到:

图1

现在我想做两件事:

  1. 首先,我想标记情节的某些区域:例如在中间x=-1000x=0背景颜色应该是黄色,中间x=0x=100它应该是红色等。

  2. 我想画一些垂直线 - 例如在x=189.

  3. 是否可以用某些颜色而不是背景来标记 x 轴?

当我使用我得到的建议时:

图2

标签: matlabplotmatlab-figure

解决方案


使用该patch()功能可能足以改变背景的外观。该patch()函数采用两个数组来描述要绘制/填充的多边形的坐标对。要绘制垂直线,line()可以使用该功能。该line()函数还采用两个数组来表示坐标对,这些坐标对描述了线的开始和结束。这是一个关于您的第三点的问题/答案:如何在 MATLAB 中为绘图中的刻度标签分配多种颜色?.

绘制背景颜色变化

clf;
xlim([-1100,5000]);
ylim([-5,20]);
hold on

%Yellow background%
X_Minimum = -1100; X_Maximum = 0;
patch([X_Minimum X_Maximum X_Maximum X_Minimum], [min(ylim) min(ylim) max(ylim) max(ylim)],'y','EdgeColor','none')

%Red background%
X_Minimum = 0; X_Maximum = 100;
patch([X_Minimum X_Maximum X_Maximum X_Minimum], [min(ylim) min(ylim) max(ylim) max(ylim)],'r','EdgeColor','none')

%Vertical line%
X_Value = 189;
line([X_Value X_Value],[min(ylim) max(ylim)],'color','k');

推荐阅读