MATLAB - 如何在同一个图形中绘制图像和冲浪?

MATLAB - how to Drawing a image and a surf in the same figure?

我已经编写代码在两个不同的图形中绘制冲浪和图像。

现在我想将这两个图像水平对齐放置在同一个图形中。 谁能帮帮我?

这是我的代码。

function cylinder = createSurfCylinder(matrix) 
%Load heat map.
load('myHeatMap.mat','myHeatMap');
Sample_Range = 255 - 0;
Temperature_Range = 450 - 50;

Multiplier = Temperature_Range/Sample_Range;
map100 = matrix.*Multiplier + 50;

Maximum_Value = 450;
Minimum_Value = 50;

%creates a image
k = imshow(map100);
%creates a colormap.
%gca returns the current axes (or standalone visualization) in the current figure.
%hence the command just works top down and affects last image displayed.
colormap(myHeatMap);
caxis([Minimum_Value Maximum_Value]);
colorbar;


%Setting up the figure%
Radius = 1.5;
Number_Of_Data_Points = 360;
theta = linspace(0,2*pi,Number_Of_Data_Points);

%The xy values according to radius and number of points%
Z_Circle = Radius*cos(theta);
Y_Circle = Radius*sin(theta);

map100 = rot90(map100);

Height = 512;
Z_Circle = repmat(Z_Circle,Height,1);
Y_Circle = repmat(Y_Circle,Height,1);
X_Length = (1:512)';
X_Length = repmat(X_Length,1,Number_Of_Data_Points);

figure('Position', [10 10 500 500])

%surf(X_Circle,Y_Circle,Z_Height,'Cdata',map100); vertical
cyl = surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100); 
title("3D Heatmap Plot");
zlabel("Z-Position");
ylabel("Y-Position");
xlabel("Length(Cm)");
%Reverse Y axis.
set(gca,'Ydir','reverse')
colormap(myHeatMap);
colorbar;
shading interp

max(map100,[],'all')
caxis([Minimum_Value Maximum_Value]);
cylinder = cyl;
end 

我曾尝试使用子图,但结果并不正确,我现在在这件事上停留了 4 小时,真的需要一些帮助。

谢谢。

使用 subplot() 函数将允许您创建包含两个 plots/images 的图形。 subplot 函数接受 3 个参数,这实际上创建了一个 array/grid,您可以在其中插入 plots/images.

伪函数调用: subplot(Rows,Columns,Position);

Position 参数遵循与数组索引相同的索引。您也可以使用多个网格槽。要将网格槽 1 和 2 用于绘图,请将 Position 参数设置为 1:2,或者如果您想将网格槽 1 到 3 用于绘图,请将 Position 参数设置为 1:3。在本例中,Rows 参数设置网格中的行数,Columns 参数设置列数。

示例图:2 x 3 网格(6 个位置)

换行 1:

figure('Position', [10 10 800 500])

换行2:

subplot(1,3,1:2); Surface = surf(Z_Points,Y_Points,X_Points,'Cdata',map100);

换行3:

subplot(1,3,3); imshow((rot90(map100))); 

运行 使用 MATLAB R2019b