Matlab imagesc上文本中的两级y轴刻度标签

Matlab imagesc上文本中的两级y轴刻度标签,matlab,text,plot,axis,Matlab,Text,Plot,Axis,我正在绘制一个图形,它是基于4x5矩阵的值的颜色/阴影网格 x轴和y轴记号标签是使用单元格数组中的文本设置的 y轴记号标签存在于两个级别 % y ticks, 2 levels ylabelnames = {'team1','set1';'team1','set2';'team2','set1';'team2','set2'}; 我希望y轴刻度标签 1) 跨越2行,使其与叠加在绘图方格中的2行文本相匹配,即imagesc网格每行第一行上的“团队”和第二行上的“设置”,或 2) 旋转标签“te

我正在绘制一个图形,它是基于4x5矩阵的值的颜色/阴影网格

x轴和y轴记号标签是使用单元格数组中的文本设置的

y轴记号标签存在于两个级别

% y ticks, 2 levels
ylabelnames = {'team1','set1';'team1','set2';'team2','set1';'team2','set2'}; 
我希望y轴刻度标签

1) 跨越2行,使其与叠加在绘图方格中的2行文本相匹配,即imagesc网格每行第一行上的“团队”和第二行上的“设置”,或

2) 旋转标签“team1”以跨越前2行,旋转标签“team2”以跨越最后2行,以避免在标签中重复使用“team1”和“team2”

我的全部代码:

%% Plot
Matrix = rand(4,5);
Matrix2 = rand(4,5);
% y ticks, 2 levels
ylabelnames = {'team1','set1';'team1','set2';'team2','set1';'team2','set2'}; 
xlabelnames = {'group1','group2','group3','group4','group5'};

sigfig = 2;
spacer = '\n';
% Font sizes
plotFontSize = 8;    labelFontSize = 8;    plotWidth = 500;    plotLength = 300;

imagesc(abs(Matrix))
colormap('gray')
colormap(flipud(colormap))
caxis([0 2])

for rows = 1:size(Matrix,1)
    for columns = 1:size(Matrix,2)
        if abs(Matrix2(rows,columns))<= 0.5 % Show 2nd values less than 0.5
            num = Matrix2(rows,columns);
            num = vpa(num,sigfig);
            num = ['= ' char(num)];
            rval = sprintf('%0.2g', Matrix(rows,columns));
            message = sprintf([ 'val= ' rval spacer 'val2' num '' ]);
            text(columns,rows, message,'HorizontalAlignment','center',...
                'FontSize',plotFontSize,'FontName','Times New Roman'); 
        end
    end
end
% Put on tick labels
set(gca,'Ticklength', [0 0],'YTick',1:size(Matrix),'XTick',1:length(xlabelnames),...
    'YTickLabel',ylabelnames,'XTickLabel',xlabelnames,...
    'FontSize',labelFontSize,'FontName','Times New Roman')
标签之间有巨大的空间,可以将它们均匀地分布在y行之间,但是如果我要增加矩阵的大小,那就不方便了,所以我不希望这样做

有没有办法实现我所需要的多级y记号标记


谢谢

在您的示例中,我将使用该函数。例如,您可以添加:

text(-0.05,1.5,'team1','HorizontalAlignment','center','Rotation',90 );
text(-0.05,3.5,'team2','HorizontalAlignment','center','Rotation',90 );
看看结果。诀窍是要理解每个“像素”(或imagesc单元元素)也是函数的“文本”x和y输入的一个单位(如果没有不同的缩放比例,也包括刻度),因此要在第一个和第二个块之间切换,请使用y=1.5或y=3.5等。。。
要跳出左边的图像,请使用负x值(x=-0.05)等。请阅读有关
text

这是可以做到的,但有点痛苦
text(-0.05,1.5,'team1','HorizontalAlignment','center','Rotation',90 );
text(-0.05,3.5,'team2','HorizontalAlignment','center','Rotation',90 );