Change Stacking Order of Plots

29 visualizaciones (últimos 30 días)
Mukul
Mukul el 29 de Nov. de 2024 a las 17:24
Comentada: Mukul el 30 de Nov. de 2024 a las 2:46
Setting up a manual FEM solver, I found the temperatures at nodes for mesh generated with the PDE Toolbox. I used these temperature values to get the surface plot as shown below.
results = createPDEResults(model,T); % T contains the nodal temperature values
%%
f1 = figure;
pdeplot(results.Mesh, XYData=results.NodalSolution, ZData=results.NodalSolution, ColorMap="jet");
view(2)
axis equal
hold on
pdegplot(model);
hold off
hold on
x = linspace(0,L,20); y = linspace(0,h,10);
[X, Y] = meshgrid(x,y);
[dTdx, dTdy] = evaluateGradient(results, X, Y);
dTdx = reshape(dTdx, size(X));
dTdy = reshape(dTdy, size(Y));
quiver(X, Y, (-k).*dTdx, (-k).*dTdy, "k", "LineWidth", 1);
hold off
h = colorbar;
set(get(h,'title'),'string',('T [°C]'));
clim([min(T), max(T)]);
I have two questions regarding this:
  1. How can I change the order of the plots so that the quiver plot is seen above the surface plot?
  2. Is it possible to find the temperature values for points in between the nodes on the plot directly?

Respuesta aceptada

Walter Roberson
Walter Roberson el 30 de Nov. de 2024 a las 2:21
pdeplot(results.Mesh, XYData=results.NodalSolution, ZData=results.NodalSolution, ColorMap="jet");
view(2)
Those lines imply that pdeplot is creating a 3D plot with ZData given by NodalSolution
quiver(X, Y, (-k).*dTdx, (-k).*dTdy, "k", "LineWidth", 1);
quiver() creates a 2D plot -- a plot with ZData all zero.
So your basic problem appears to be that the Z component of the surface is greater than the all-zero Z components of the quiver plot. When you look down from the top as in view(2), Z values that are greater are "closer" to the viewpoint and take priority in drawing.
You might need to quiver3() and specify the Z values as results.NodalSolution to raise the quiver lines to the same level as the surface plotted by pdeplot()
Or you could create a hgtransform and parent the pdeplot and quiver to the transform group, and set the Matrix to invert the Z axis, so that the zeros from the quiver become closer than the results.NodalSolution
Or you could use
ZData=-results.NodalSolution, ColorMap=flipud(jet)
  1 comentario
Mukul
Mukul el 30 de Nov. de 2024 a las 2:46
Thank you very much! Using quiver3 works the best since the Z values are all positive and I can see all the vector arrows. hgtransform cuts some of the arrows near the edges.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Productos


Versión

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by