Plot 3D data from excel file
103 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am unable to plot the surface plot for the data from the excel sheet
0 Kommentare
Antworten (3)
Muskan
am 26 Jun. 2024
You can use the "surf" function in MATLAB to plot the surface plot. Please follow the following steps:
1) Prepare Your Excel File:
Ensure your Excel file is organized such that it represents a grid of Z values. The first row and first column can represent the X and Y coordinates, respectively.
2) Read Data from Excel File:
Use the readmatrix function to read the data from the Excel file into MATLAB.
3) Extract X, Y, and Z Data:
Extract the X, Y, and Z data from the matrix.
4) Plot the Surface:
Use the "surf" function to create a surface plot.
Refer to the following documentation of "surf" for a better understanding:
0 Kommentare
Pavan Sahith
am 26 Jun. 2024
Hello Vipul,
I see that you're trying to generate a surface plot using data from your Excel file.
To achieve that in MATLAB , you can refer to the following sample code which will help,
% Load the data from the Excel sheet
data = readtable('data.xlsx');
% Extract the columns
Primary = data.Primary;
Auger = data.Auger;
Yield = data.Yield;
% Remove rows with NaN values in Yield
validIdx = ~isnan(Yield);
Primary = Primary(validIdx);
Auger = Auger(validIdx);
Yield = Yield(validIdx);
% Create a grid of unique Primary and Auger values
[PrimaryGrid, AugerGrid] = meshgrid(unique(Primary), unique(Auger));
% Interpolate Yield values onto the grid
YieldGrid = griddata(Primary, Auger, Yield, PrimaryGrid, AugerGrid);
% Create the surface plot
figure;
surf(PrimaryGrid, AugerGrid, YieldGrid);
xlabel('Primary');
ylabel('Auger');
zlabel('Yield');
title('Surface Plot of Yield');
colorbar; % Add a color bar to indicate the scale of Yield
This approach uses griddata to interpolate the Yield values onto the grid, ensuring that the surface plot is properly populated with data points.
The interpolation step using griddata is essential because it helps in creating a continuous surface from discrete data points.
Consider referring to the following MathWorks documentation to get a better understanding
- griddata - https://www.mathworks.com/help/matlab/ref/griddata.html
- meshgrid- https://www.mathworks.com/help/matlab/ref/meshgrid.html
- surf- https://www.mathworks.com/help/matlab/ref/surf.html
Hope this helps you in moving ahead
0 Kommentare
Star Strider
am 26 Jun. 2024
Using the provided data —
T1 = readtable('Copy of data.xlsx')
VN = T1.Properties.VariableNames;
x = T1.Primary;
y = T1.Auger;
z = T1.Yield;
figure
stem3(x, y, z)
hold on
scatter3(x, y, z, 50, z, 'filled')
hold off
colormap(turbo)
colorbar
xlabel(VN{1})
ylabel(VN{2})
zlabel(VN{3})
axis('padded')
title('Stem - Scatter Plot Of Original Data')
xv = linspace(min(x), max(x), 50);
yv = linspace(min(y), max(y), 50);
[X,Y] = ndgrid(xv, yv);
F = scatteredInterpolant(x, y, z);
Z = F(X,Y);
figure
surfc(X, Y, Z)
colormap(turbo)
colorbar
xlabel(VN{1})
ylabel(VN{2})
zlabel(VN{3})
% axis('padded')
title('Surface Plot Of Original Data')
Interpolatting the missing data yields this result —
T1 = fillmissing(T1, 'linear')
VN = T1.Properties.VariableNames;
x = T1.Primary;
y = T1.Auger;
z = T1.Yield;
figure
stem3(x, y, z)
hold on
scatter3(x, y, z, 50, z, 'filled')
hold off
colormap(turbo)
colorbar
xlabel(VN{1})
ylabel(VN{2})
zlabel(VN{3})
axis('padded')
title('Stem - Scatter Plot Of Interpolated (‘Filled’) Data')
xv = linspace(min(x), max(x), 50);
yv = linspace(min(y), max(y), 50);
[X,Y] = ndgrid(xv, yv);
F = scatteredInterpolant(x, y, z);
Z = F(X,Y);
figure
surfc(X, Y, Z)
colormap(turbo)
colorbar
xlabel(VN{1})
ylabel(VN{2})
zlabel(VN{3})
% axis('padded')
title('Surface Plot Of Interpolated (‘Filled’) Data')
I am assuming that you want them plotted in this order. If not, change the original assignments for ‘x’, ‘y’ and ‘z’, in both sections (‘Original’ and ‘Interpoalted’). My code should adapt automatically to those changes.
.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!