我使用以下代码生成我的混淆矩阵,该矩阵在互联网上找到:
confmat = C;
labels = {'0', '1', '2', '3', '11' };
numlabels = size(confmat, 1); % number of labels
confpercent = 100*confmat./repmat(sum(confmat, 1),numlabels,1);
imagesc(confpercent);
Mycolors=[0 0.7 0.4; 1 0.9 0.9 ]
colormap(flipud(Mycolors));
textStrings = num2str([confpercent(:)], '%.1f%%\n');
textStrings = strtrim(cellstr(textStrings));
[x,y] = meshgrid(1:numlabels);
hStrings = text(x(:),y(:),textStrings(:), ...
'HorizontalAlignment','center');
midValue = mean(get(gca,'CLim'));
textColors = repmat(confpercent(:) > midValue,1,3);
set(hStrings,{'Color'},num2cell(textColors,2));
set(gca,'XTick',1:numlabels,... 'XTickLabel',labels,... 'YTick',1:numlabels,... 'YTickLabel',labels,... 'TickLength',[0 0]);
虽然我想在矩阵中添加垂直线以在值之间进行分隔,所以我可以得到与下一个相似的线:
我可以使用pcolor(confusion_matrix)来获得那些垂直线,但是百分比被拖到每个网格的角落,我得到了下一张图片:
答案 0 :(得分:0)
axes
对象必须处理不同的axes
属性时的经典MATLAB技巧。
基本上,我们将创建一个新的axes
对象,将其放在珍贵的对象之上,然后使其透明(无背景色),以便我们可以看到后面的内容,但我们将使网格线保持清晰可见就在我们想要的地方。
因此,在您的示例代码之后,立即添加:
ax1 = gca ; % get handle of initial axes
ax2 = axes ; % create new axe and retrieve handle
lim = [0 numlabels] ; % Prepare X and Y properties
tks = 0:numlabels ;
% superpose the new axe on top, at the same position
set(ax2,'Position', get(ax1,'Position') );
% make it transparent (no color)
set(ax2,'Color','none') ;
% set the X and Y properties
set(ax2, ...
'XLim',lim,'XTick',tks,'XTickLabel','' ,...
'YLim',lim,'YTick',tks,'YTickLabel','' ) ;
% now set your grid properties
set(ax2,'GridColor','k','GridAlpha',1)
这会让您(数据有所不同,因为我随机生成了混淆矩阵):
当然,现在您可以完全控制网格线,因此您还可以通过axes
的网格属性来优化网格线的显示方式。一些有趣的属性是:
GridLineStyle
-网格线的线型GridColor
-网格线的颜色GridAlpha
-网格线透明度LineWidth
-线宽有关更多详细信息,请参阅Axes Properties的文档
答案 1 :(得分:0)
好! 我已经找到了获取垂直和水平线的要求的东西,即只需使用plot并按住就可以添加线:
我在问题中提到的代码的末尾使用了下一个代码:
hold on
plot ([2 2],get(gca, 'YLim'), 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot ([1 1],get(gca, 'YLim'), 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot ([3 3],get(gca, 'YLim'), 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot ([4 4],get(gca, 'YLim'), 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot (get(gca, 'XLim'), [1 1], 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot (get(gca, 'XLim'), [2 2], 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot (get(gca, 'XLim'), [3 3], 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
plot (get(gca, 'XLim'), [4 4], 'Color', [0.15, 0.15, 0.15],'LineWidth',0.5)
我使用了1、2、3和4,因为我有四个类别,并且在每个类别的末尾预测结果都需要绘制线。 希望会有用