why surface plot is connecting its edges?

8 views (last 30 days)
I need to create a 4d plot and am using the surf plot with the colors being the 4th dimension of the graph, however, for some data sets the edges of the surface is connecting together as can be seen in the first image, the second image uses the same script but it does not connect the edges. Any help will be very appreciated.
  5 Comments
Walter Roberson
Walter Roberson on 10 Jan 2021
Your x does recycle
T = readtable('data_surf.xlsx');
T.Properties.VariableNames = {'x', 'y', 'v'};
plot(T.x)
minx = min(T.x);
maxx = max(T.x);
miny = min(T.y);
maxy = max(T.y);
xvec = linspace(minx, maxx);
yvec = linspace(miny, maxy);
[X,Y] = ndgrid(xvec, yvec);
F = scatteredInterpolant(T.x, T.y, T.v);
V = F(X,Y);
surf(X, Y, V, 'edgecolor', 'none')
Wilson Duarte
Wilson Duarte on 10 Jan 2021
Edited: Wilson Duarte on 10 Jan 2021
all the variables recycle because for each temperature I have 9 values of x (SOC) and for each value of SOC I have 15 values of y (current)
your solution does work for the graph but I cannot use it since the grid shows the position of the each parameter and I need this as well
thank you anyways

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 10 Jan 2021
Try this for the file provided, and the others that likely have similar formats.
Note — It is only necessary to reshape the matrix, and that griddata (as much as I like the function) is not necessary here.
The Code —
D = readmatrix('data_surf.xlsx');
[U2,ix] = unique(D(:,2)); % Determine Initial Indices Of Repeated Elements
ixd = diff(ix); % Lenmgth Of Repeated Elements
Dr = reshape(D,mean(ixd),[]); % Reshape Data Matrix
collen = size(Dr,2)/size(D,2); % Column Block Lengths
for k = 1:size(D,2)
M{k} = Dr(:,(1:collen)+(k-1)*collen); % Segment By Column Blocks
end
figure
surf(M{1}, M{2}, M{3})
grid on
xlabel('Current')
ylabel('SOC')
zlabel('Parameter')
The Plot —
.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!