Reduce lines shown in a surface plots
33 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I followed a previous reply trying to reduce the number of lines on a 3D plot but it does not seem to work in my case. What is happening in my case is that it does not show any lines at all. I am not sure what am I doing wrong. Could you please help me?
The code that I am using is below, where PWNORM,PSNORM,DOS are the three vectors with data that define each point of my surface:
figure
surfc(PWNORM,PSNORM,DOS)%'FaceAlpha',0.5,(for transparency),'EdgeColor','none'
hidden on
colormap(flipud(colormap))
%colormap(flipud(hot))
caxis([20,70])
ylim([0 4]) %solar
xlim([0.5 5.5])%wind
zlim([20 70])
s=surfc(PWNORM,PSNORM,DOS,'EdgeColor','none')
%colormap(flipud(hot))
caxis([20,70])
ylim([0 4]) %solar
xlim([0.5 5.5])%wind
zlim([20 70])
xlabel('W ');
ylabel('S');
zlabel('SD');
%%Extract X,Y and Z data from surface plot
x=get(s,'XData');
y=get(s,'YData');
z=get(s,'ZData');
%%Create vectors out of surface's XData and YData
x=x(1,:);
y=y(:,1);
%%Divide the lengths by the number of lines needed
xnumlines = 50; % 10 lines
ynumlines = 50; % 10 partitions
xspacing = round(length(x)/xnumlines);
yspacing = round(length(y)/ynumlines);
%%Plot the mesh lines
% Plotting lines in the X-Z plane
hold on
for i = 1:yspacing:length(y)
Y1 = y(i)*ones(size(x)); % a constant vector
Z1 = z(i,:);
plot3(x,Y1,Z1,'-k');
end
% Plotting lines in the Y-Z plane
for i = 1:xspacing:length(x)
X2 = x(i)*ones(size(y)); % a constant vector
Z2 = z(:,i);
plot3(X2,y,Z2,'-k');
end
hold off
0 comentarios
Respuestas (2)
John BG
el 7 de Ag. de 2017
Editada: John BG
el 8 de Ag. de 2017
Hi Katerina
.
while
hs=surf(..)
hs
=
Surface with properties:
EdgeColor: 'none'
LineStyle: '-'
FaceColor: 'flat'
FaceLighting: 'flat'
FaceAlpha: 1
XData: [30×30 double]
YData: [30×30 double]
ZData: [30×30 double]
CData: [30×30 double]
returns a handle with the data you need to obtain x y z
hs=surfc(..)
only returns a handle to the surface contour, thus not valid to then get the sought x y z. Simply, x y z are not in hs out of surfc()
Use surf() instead
close all;clear all;clc
% hidden on
% colormap(flipud(colormap)) % or %colormap(flipud(hot))
% caxis([20,70])
% ylim([0 4]) %solar
% xlim([0.5 5.5])%wind
% zlim([20 70])
[PWNORM,PSNORM,DOS] = peaks(30)
hs=surf(PWNORM,PSNORM,DOS,'EdgeColor','none')
% or % surfc(PWNORM,PSNORM,DOS)%'FaceAlpha',0.5,(for transparency),'EdgeColor','none'
xlabel('W ');ylabel('S');zlabel('SD');
%%Extract X,Y and Z data from surface plot
x=get(hs,'XData');y=get(hs,'YData');z=get(hs,'ZData');
%%Create vectors out of surface's XData and YData
x=x(1,:);y=y(:,1);
%%Divide the lengths by the number of lines needed
xnumlines = 50; % 10 lines
ynumlines = 50; % 10 partitions
xspacing = round(length(x)/xnumlines);
yspacing = round(length(y)/ynumlines);
.
Now the lines plots
figure(2);hold all;
for i = 1:yspacing:length(y)
Y1 = y(i)*ones(size(x)); % a constant vector
Z1 = z(i,:);
plot3(x,Y1,Z1,'-k');
end
figure(3);hold all;
for i = 1:xspacing:length(x)
X2 = x(i)*ones(size(y)); % a constant vector
Z2 = z(:,i);
plot3(X2,y,Z2,'-k');
end
hold off
.
if you find this answer useful would you please be so kind to consider marking my answer as Accepted Answer?
To any other reader, if you find this answer useful please consider clicking on the thumbs-up vote link
thanks in advance
John BG
2 comentarios
Sonal Gupta
el 3 de Oct. de 2019
I copied your code exactly. However, I am getting the following two figures as Figure 2 and Figure 3 respectively. Figure 1 comes out as shown in your answer. What am I doing wrong?
Jan
el 9 de Ag. de 2017
surfc replies the handle of the surface object and a list of handles to the patch objects. If you need the surface only, use this:
SurfcH = surfc(PWNORM, PSNORM, DOS, 'EdgeColor', 'none');
s = SurfcH(1);
I assume the rest of your code works directly then.
0 comentarios
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!