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
我已经编写代码在两个不同的图形中绘制冲浪和图像。
现在我想将这两个图像水平对齐放置在同一个图形中。 谁能帮帮我?
这是我的代码。
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