在MATLAB

时间:2015-05-12 20:01:02

标签: matlab plot matlab-figure

考虑下图中显示的示例

enter image description here

第一个子图显示了3轴加速度计数据(不相关,只是一个例子!),第二个图显示了pcolor图中相应的计算体姿。

这里的问题是有6种可能的姿势,但并不是所有的姿势都会覆盖给定的加速度计数据集。我们可能有3,4,5或6个姿势,并且pcolor图中的许多颜色取决于数据集。在这种情况下,我们如何定义图例,因为颜色的数量不固定?

在任何情况下,即使事先了解姿势数,pcolor图也只显示一个图例条目(见上图中的子图2),代码如下:

subplot(2,1,2);
%sleep_status(1:6) = 0:5;
h=pcolor([sleep_status; sleep_status]), shading flat, colormap(jet(6))
legend(h,{'Unknown','Upright','Lying Left','Lying Right','Lying on Chest','Lying on back'})
set(gca, 'YTickLabel', [])
ylabel('Sleep State')
axis tight 

1 个答案:

答案 0 :(得分:1)

我不知道如何调整图例,但使用颜色栏怎么样?

例如,代码从here中心YTickLabels沿着颜色条获取。修改它以适合您的数据,如下所示:

enter image description here

以下是整个代码:

clear
clc

%// Test data
sleep_status = [randi([1,10],1,12)];
h=pcolor([sleep_status; sleep_status]), shading flat, colormap(jet(6));

set(gca, 'YTickLabel', [])
ylabel('Sleep State')
axis tight 

%// Place label at the center.
%// Source: http://www.mathworks.com/matlabcentral/answers/102056-how-can-i-make-the-ticks-in-the-colorbar-appear-at-the-center-of-each-color-in-matlab-7-0-r14
numcolors = 6;

caxis([1 numcolors]);
cbarHandle = colorbar('YTick',...
[1+0.5*(numcolors-1)/numcolors:(numcolors-1)/numcolors:numcolors],...
'YTickLabel',{'Unknown','Upright','Lying Left','Lying Right','Lying on Chest','Lying on back'}, 'YLim', [1 numcolors]);

希望有所帮助!