36 views (last 30 days)
Show older comments
vipul vibhanshu on 26 Jun 2024 at 9:38
Answered: Star Strider on 26 Jun 2024 at 11:26
- Copy of data.xlsx
I am unable to plot the surface plot for the data from the excel sheet
0 Comments Show -2 older commentsHide -2 older comments
Show -2 older commentsHide -2 older comments
Sign in to comment.
Sign in to answer this question.
Answers (3)
Muskan on 26 Jun 2024 at 10:04
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:
https://in.mathworks.com/help/matlab/ref/surf.html
0 Comments Show -2 older commentsHide -2 older comments
Show -2 older commentsHide -2 older comments
Sign in to comment.
Pavan Sahith on 26 Jun 2024 at 10:31
Open in MATLAB Online
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 Comments Show -2 older commentsHide -2 older comments
Show -2 older commentsHide -2 older comments
Sign in to comment.
Star Strider on 26 Jun 2024 at 11:26
Open in MATLAB Online
- Copy of data.xlsx
Use the scatteredInterpolant function to create the surface.
Using the provided data —
T1 = readtable('Copy of data.xlsx')
T1 = 21x3 table
Primary Auger Yield _______ _____ _____ 2000 950 NaN 2500 530 27.5 2000 530 34.81 2000 530 18.9 2700 590 21.7 2800 580 17.5 4000 750 18.4 4000 950 25.7 4000 950 24 4100 950 NaN 2500 700 23.2 4000 950 NaN 4000 950 NaN 4000 950 23.8 4300 900 27.5 2500 400 25.5
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);
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
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')
T1 = 21x3 table
Primary Auger Yield _______ _____ _____ 2000 950 20.19 2500 530 27.5 2000 530 34.81 2000 530 18.9 2700 590 21.7 2800 580 17.5 4000 750 18.4 4000 950 25.7 4000 950 24 4100 950 23.6 2500 700 23.2 4000 950 23.4 4000 950 23.6 4000 950 23.8 4300 900 27.5 2500 400 25.5
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);
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
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 Comments Show -2 older commentsHide -2 older comments
Show -2 older commentsHide -2 older comments
Sign in to comment.
Sign in to answer this question.
See Also
Categories
MATLABGraphics2-D and 3-D PlotsSurfaces, Volumes, and PolygonsSurface and Mesh Plots
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)
Contact your local office