imagesc上的双x轴和y轴以及Matlab中的surf绘图
我想在imagesc和surf绘图的x轴和y轴上放置两个值。两个打印打印相同的值,但第一个是2D,第二个是3D 我想放在x轴和y轴上的数组具有相同的长度,并且在单个绘图中显示都很有趣,因为它们彼此相关 因此,x轴和y轴应该类似于本文()中的示例解决方案 对于imagesc绘图,使用示例解决方案的johan代码和一些随机数据,双x轴并不困难imagesc上的双x轴和y轴以及Matlab中的surf绘图,matlab,plot,axis,Matlab,Plot,Axis,我想在imagesc和surf绘图的x轴和y轴上放置两个值。两个打印打印相同的值,但第一个是2D,第二个是3D 我想放在x轴和y轴上的数组具有相同的长度,并且在单个绘图中显示都很有趣,因为它们彼此相关 因此,x轴和y轴应该类似于本文()中的示例解决方案 对于imagesc绘图,使用示例解决方案的johan代码和一些随机数据,双x轴并不困难 Z = rand(20,30); Y = 32.*(1:size(Z,1)); X = 1:size(Z,2); scale_factor_xaxis=10
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比例。但我对代码的理解还不够,无法按照我所描述的方式实现这一点。我非常确信这种方法不适用于3D。这段代码中的参考线方法是创建一个新的绘图(实际上是轴),其高度为1e-12,因此可以看到标签,但壶太小,看起来像一条线。我怀疑你能在3D中做到这一点。