在Matlab中的imagesc和surf图上的双x和y轴

时间:2014-12-09 12:53:42

标签: matlab plot axis

我想在imagesc和surf图的x轴和y轴上放两个值。两个图都绘制了相同的值,但第一个是2D,第二个是3D。

我想要放在x轴和y轴上的数组具有相同的长度,并且在单个绘图中显示都很有趣,因为它们彼此相关。

因此,x轴和y轴应该与此帖子中的示例解决方案(matlab multiple x axis one below another)类似。

在图像绘制的情况下,使用示例解决方案的johan代码和一些随机数据,双x轴并不困难。

Z = rand(20,30);
Y = 32.*(1:size(Z,1));
X = 1:size(Z,2);

scale_factor_xaxis=10;
scale_factor_yaxis=100;

figure(1)
imagesc(X,Y,Z)
set(gca,'XDir','normal','YDir','normal');
title('title')
xlabel('first x label')
ylabel('first y label')

first_axis = gca;
sqzx = 0.15; %// distance to squeeze the first x-axis plot
sqzy = 0.15; %// distance to squeeze the first y-axis plot
set(first_axis, 'Position', get(first_axis, 'Position') + [0 sqzx 0 -sqzx ]);

ax2 = axes('Position', get(first_axis, 'Position') .* [1 1 1 1e-12] - [0 sqzx 0 0],'Color','none');
xlim(get(first_axis, 'XLim') * scale_factor_xaxis);
set(ax2, 'XScale', get(first_axis, 'XScale')); %// make logarithmic if first axis is too
xlabel('second x label')

下一步应该是将第二个比例和标签放到y轴上。但是我不能使用下一部分代码:

ax2 = axes('Position', get(first_axis, 'Position') .* [1 1 1 1e-12] - [0 sqzy 0 0],'Color','r');
ylim(get(first_axis, 'YLim') * scale_factor_yaxis);
set(ax2, 'YScale', get(first_axis, 'YScale')); %// make logarithmic if first axis is too
ylabel('second y label')

这样,第二个y标签被绘制在第二个x轴旁边,第二个y标度是x标度。但是我不太了解代码,不能按照我描述的方式来理解。

0 个答案:

没有答案