在MATLAB中将两个y轴放在imagesc图像上

时间:2014-01-08 19:45:14

标签: image matlab plot axes

我认为这是一个简单的问题:我有一个使用imagesc成像的矩阵。我只是想在图像的右侧显示第二个y轴。我怎么做?例如:

clear all;
aMatrix = rand(20,30);
yAxis1 = 32.*(1:size(aMatrix,1));
yAxis2 = 165.*(1:size(aMatrix,1));
xAxis = 1:size(aMatrix,2);
imagesc(yAxis1, xAxis1, aMatrix);

以下将在左侧显示yAxis1的图像。这很好,但如何在图片的右侧同时显示yAxis2 ?感谢。

2 个答案:

答案 0 :(得分:6)

  aMatrix = rand(20,30);
  yAxis1 = 32.*(1:size(aMatrix,1));
  yAxis2 = 165.*(1:size(aMatrix,1));
  xAxis = 1:size(aMatrix,2);
  h1=imagesc(xAxis, yAxis1, aMatrix);set(gca,'YDir','normal');
  ax1=gca;
  set(ax1,'YColor','r','YAxisLocation','right');
  set(ax1,'XTickLabel',' ');
  ax2=axes('Position',get(ax1,'Position'),'YAxisLocation','left');
  h2=imagesc(xAxis, yAxis2,aMatrix,'Parent',ax2);
  set(gca,'YDir','normal');

enter image description here

答案 1 :(得分:0)

使用yyaxis的解决方案非常相似:

  aMatrix = rand(20,30);
  yAxis1 = 32.*(1:size(aMatrix,1));
  yAxis2 = 165.*(1:size(aMatrix,1));
  xAxis = 1:size(aMatrix,2);
  yyaxis left
  imagesc(xAxis, yAxis1, aMatrix);
  ax = gca;
  ax.YColor = ax.XColor;
  ylabel('Left Side')
  yyaxis right
  imagesc(xAxis, yAxis2,aMatrix);
  ax.YColor = ax.XColor;
  ylabel('Right Side')