Hi everyone,
I am trying to overlay the contour stroke shape into the colorful surf plot
Here the code i've tried but it doesnt work, it only show the left image above
hold on
surf(X,Y,-M1); surf(-X,Y,M1); %Reflection along y axis
surf(X,Y,Ta); surf(-X,Y,Ta); %Stroke Contour

4 Kommentare

surf(X,Y,-M1); surf(-X,Y,M1); %Reflection along y axis
I have to wonder whether that should be
surf(X,Y,-M1); surf(-X,fliplr(Y),M1); %Reflection along y axis
or
surf(X,Y,-M1); surf(-X,flipud(Y),M1); %Reflection along y axis
or something like that?
Hi, i test two of your codes and i found that
surf(X,Y,-M1); surf(-X,Y,M1); %Reflection along y axis
is the same as the
surf(X,Y,-M1); surf(-X,flipud(Y),M1); %Reflection along y axis
hold on
surf(-X,flipud(Y),M1); %surf(X,Y,-M1); %Left image - contour
%surf(-X,Y,Ta);
surf(X,Y,Ta); %right image - stroke contour
Do you have any idea on how to overlay the right image to the left image?
Walter Roberson
Walter Roberson am 15 Mär. 2020
It would help if we had your data to work with -- X, Y, and M1 and Ta
Yes you may have my code and my data in the csv attachment,
The picture shown is what i'm trying to do: to overlay the black stroke of the flame front on the colorful surf plot
colormap jet
%{
Read data
%}
filename0 = '0.csv';
Data0 = csvread(filename0,6,0);
filename1 = '360.csv';
Data1 = csvread(filename1,6,0);%skip 6 header lines
%{
Data Extraction
%}
X_Data = Data0(:,2); Y_Data = Data0(:,1); %x and y coordinates
%Extract both temperature and x-velocity data
T_Data0 = Data0(:,8); V_Data0 = Data0(:,9);
T_Data1 = Data1(:,8); V_Data1 = Data1(:,9);
V_Data1 = V_Data1-V_Data0; %Fluctuation velocity, v'
V_Data1(T_Data1>400)=0; %Temperature outside the flame front is not considered
T_1=V_Data1-1; %Create flame front stroke by darken it using caxis later, or any alternative method
T_1(T_Data1>500)=NaN; T_1(T_Data1<325)=NaN; %Only circumference of flame front is needed
%{
Surf
%}
[x,~,xi]=unique(X_Data*1e3/2); %convert m to mm
[y,~,yi]=unique(Y_Data*1e3/2);
subs=[xi yi];%use the indices instead of values as coordinates
[X,Y]=ndgrid(x,y);%generate the grid surf() expects
Ta =accumarray(subs,T_1,[],[],NaN);
M1=accumarray(subs,V_Data1,[],[],NaN);%fill missing with NaN
hold on
surf(-X,Y,M1); surf(X,Y,-M1); %Reflection along y-axis
surf(-X,Y,Ta); surf(X,Y,Ta); %Stroke Contour
shading interp; c=colorbar;
xlim([-2 2]); ylim([-0.5 3.4]);
xlabel("x/R (mm)"+newline);ylabel("y/R (mm)"+newline)
title(c,"v'/U_o",'FontSize',9,'FontWeight','bold');
title('Phase = 0\circ')
caxis([-.1 .1]) %Set the range
view(0,90);

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 16 Mär. 2020

0 Stimmen

view(0,-90)

4 Kommentare

LEONG SING YEW
LEONG SING YEW am 17 Mär. 2020
Thank you!
Hi,
I use xy plots instead of using the the surf plot for the contour line for better view.
The images attached below can be seen that the surf image is blocking the stroke shape on each side, i wonder if the xy plot stroke shape can be shift towards/backward so it can overlay the surf plot. Appreciate your help again.
Here's the code:
T_Data1(T_Data1>390) = 300;
[A B]=size(T_Data1);
X_new = zeros(A,1); Y_new = zeros(A,1);
for i = 1:A;
if T_Data1(i,:)>350;
X_new(i) = X_Data(i); %retain the value
Y_new(i) = Y_Data(i);
else
continue
end
end
XY = [X_new*1e3 Y_new*1e3];
rows = find(XY(:,2)==0);
XY(rows,:)=[]; %eliminate rows with value zeros
[~,idx] = unique(XY(:,2)); %which rows have a unique first value
XY = XY(idx,:); %retain them
[~,idy] = unique(XY(:,1));
XY = XY(idy,:);
X = XY(:,1)/2;
Y = XY(:,2)/2;
plot(-X,Y,'black','linewidth',2); plot(X,Y,'black','linewidth',2)
Walter Roberson
Walter Roberson am 22 Mär. 2020
plot() creates a 3D plot with empty Z components, and that in turn is treated the same as if the Z components were all 0. You can use plot3() to provide explicit Z coordinates; you would want to use a Z larger than the largest Z in the surf plot.
I wonder if pcolor() would be better than surf() for your purpose? pcolor is a surface plot underneath, but it creates a surface in which all the Z are 0 and the color data is set according to the Z data that was passed to pcolor(). Using Z all 0 can make it easier to draw things on top of it.
LEONG SING YEW
LEONG SING YEW am 22 Mär. 2020
omg, i didn't know this command "pcolor" exist, amazing!!! Thank you so much!!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by