Resizing Figure Window
Copying your script to a
.m and running it instead of a live
.mlx file will automatically create all the figures in a separate window by default. To adjust the size of the figures the following the
position property can be modified. To adjust the scale functions
zticks() can be used. These three scale functions take in an array representing all the line markers along the respective axis/scale.
Test Plot Script:
X_Position = 10; Y_Position = 10; Width = 1000; Height = 500; %Configuring the figure settings% figure('Position', [X_Position Y_Position Width Height]) %Test plot (replace with your plot)% Data = [1 2 3 4 5 6]; plot(Data);
Plotting Heatmaps on a Cylindrical Surfaces
Method 1: Using
Haven’t delved into which orientation the data should be set as but this is an option to use the
warp() function to wrap the heatmap around a cylinder. They’re most likely other 3D plotting options if specific points are of interest. The points of the cylinder to be plotted are generated using the
cylinder() function which returns the xyz-coordinates of the cylinder’s wireframe. The fourth input argument into the
warp() function serves and a
colormap in this case it is proportional to the heatmap values.
load('HeatMapMatrix.mat'); %Setting up the figure% clf; close all; figure('Position', [10 10 1000 500]) %Creating the cylinder% Cylinder_Radius = 360; Cylinder_Height = 512; [X,Y,Z] = cylinder(Cylinder_Radius,Cylinder_Height-1); %Warping the heatmap along the cylinder% subplot(1,2,1); warp(X,Y,Cylinder_Height.*Z,map100'); colormap(gca,'jet'); subplot(1,2,2); warp(X,Y,Cylinder_Height.*Z,map100); colormap(gca,'jet');
Method 2: Plotting All Points and Using
In this case, the coordinates for a cylinder are generated by first finding the coordinates of the circumference of the cylinder. This is done by using the
X-Points = Radius × cos(𝜃)
Y-Points = Radius × sin(𝜃)
This results in the xy-coordinates of the cylinder’s circle. These xy-coordinates need to be duplicated using
repmat() to be later used for the varying heights. The process can be described best with a diagram as follows:
Four matrices above are created to plot each
Heat Data point corresponding to an xyz-coordinate. The x and y coordinates are repeated in every row of matrices
Y_Points since those are constant for the repeating circles. The columns of the matrix
Z-Points are also duplicates of each other since the heights should be constant for each row corresponding to each circle.
load('HeatMapMatrix.mat'); Radius = 20; Number_Of_Data_Points = 360; Theta = linspace(0,2*pi,Number_Of_Data_Points); %The xy values according to radius and number of points% X_Points = Radius*cos(Theta); Y_Points = Radius*sin(Theta); map100 = rot90(map100); Sample_Range = 255 - 0; Temperature_Range = 450 - 50; Multiplier = Temperature_Range/Sample_Range; map100 = map100.*Multiplier + 50; Height = 512; X_Points = repmat(X_Points,Height,1); Y_Points = repmat(Y_Points,Height,1); Z_Points = (1:512)'; Z_Points = repmat(Z_Points,1,Number_Of_Data_Points); clf; close; figure('Position', [10 10 800 500]) Offset = 200; subplot(1,3,1:2); Surface = surf(Y_Points,X_Points,Z_Points,'Cdata',map100); title("3D Heatmap Plot"); zlabel("Height"); shading interp colorbar % direction = [0 1 0]; % rotate(Surface,direction,90) Maximum_Value = 450; Minimum_Value = 50; caxis([Minimum_Value Maximum_Value]); subplot(1,3,3); imshow(rot90(rot90(map100))); colormap(gca, 'default'); title("Flat Heatmap Plot"); caxis([Minimum_Value Maximum_Value]); colorbar;
Ran using MATLAB R2019b
CLICK HERE to find out more related problems solutions.