带有多个轴和刻度线的imagesc

时间:2017-07-26 03:01:52

标签: matlab plot

我有一个[12 x 6]矩阵A,我用imagesc表示,并在其上加上了一些粗线:

figure
imagesc(A)

set(gca,'xtick', linspace(0.5,size(A,2)+0.5,C+1),...
     'ytick', linspace(0.5,size(A,1)+0.5,B*al+1),'linewidth',3);
set(gca,'xgrid', 'on', 'ygrid', 'on', 'gridlinestyle', '-', 'xcolor',
     'k', 'ycolor', 'k');
set(gca, 'XTickLabelMode', 'manual', 'XTickLabel', [],'YTickLabel', []);
colorbar

A

然后我想强加一些更细的刻度线,分成两个由粗线分隔的方框:

ax1 = gca;
ax1_pos = get(ax1,'Position'); % position of first axes
ax2 = axes('Position',ax1_pos,...
    'XAxisLocation','top',...
    'YAxisLocation','right',...
    'Color','none');
set(gca,'xtick', linspace(0.5,size(A,2)+0.5,2*C+1),'linewidth',1);

B

结果显然不令人满意。我该怎么办呢?我认为'Color','none'可以做到这一点......

1 个答案:

答案 0 :(得分:1)

我不会尝试修改刻度线长度并添加第二个轴,而是在图像上绘制一些额外的lines。这应该达到你想要的目的:

% Some sample data:
A = rand(12, 6);

% Plot image:
imagesc(A);
set(gca, 'Visible', 'off');
hold on;
colorbar;

% Plot horizontal lines:
yLines = repmat((0:size(A, 1))+0.5, 2, 1);
xLines = repmat([0.5; size(A, 2)+0.5], 1, size(yLines, 2));
line(xLines, yLines, 'LineWidth', 3, 'Color', 'k');

% Plot thick vertical lines:
xLines = repmat((0:2:size(A, 2))+0.5, 2, 1);
yLines = repmat([0.5; size(A, 1)+0.5], 1, size(xLines, 2));
line(xLines, yLines, 'LineWidth', 3, 'Color', 'k');

% Plot thin vertical lines:
xLines = repmat((1:2:size(A, 2))+0.5, 2, 1);
yLines = repmat([0.5; size(A, 1)+0.5], 1, size(xLines, 2));
line(xLines, yLines, 'LineWidth', 1, 'Color', 'k');

以下是情节:

enter image description here