Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Is there a way to plot the name of a point on a figure when it is plotted?

Asked by Brian on 6 May 2013

Hello,

I need to change this code so that I can plot some of the node names next to the plotted nodes on the figure when it is plotted. (the plot would be of finite elements). Is there a way to do this? Thanks for your time

 function PolyMshr_PlotMsh(Node,Element,NElem,Supp,Load) % In order to use the Matlab patch function to plot the entire mesh at once, we create an element connectivity matrix ElemMat that is padded with NaNs
clf; axis equal; axis off; hold on;
Element = Element(1:NElem)';                 %Only plot the first block
MaxNVer = max(cellfun(@numel,Element));      %Max. num. of vertices in mesh % 
PadWNaN = @(E) [E NaN(1,MaxNVer-numel(E))];  %Pad cells with NaN
ElemMat = cellfun(PadWNaN,Element,'UniformOutput',false);
ElemMat = vertcat(ElemMat{:});               %Create padded element matrix
patch('Faces',ElemMat,'Vertices',Node,'FaceColor','w'); pause(1e-6)
if exist('Supp','var')&&~isempty(Supp)&&~isempty(Load)%Plot BC if specified
  plot(Node(Supp(:,1),1),Node(Supp(:,1),2),'b>','MarkerSize',8);
  plot(Node(Load(:,1),1),Node(Load(:,1),2),'m^','MarkerSize',8); hold off;
end

0 Comments

Brian

Products

1 Answer

Answer by per isakson on 6 May 2013

The function

    text( x, y, string )

will do that.

5 Comments

per isakson on 7 May 2013

To me "some of the node names" is a string. What do you mean?

Brian on 7 May 2013

Sorry. I meant that there is an array (called fem.e ) which corresponds to these coordinates on the figure. Would I be able to print the numbers of the elements next to the element on the figure. thanks again

per isakson on 7 May 2013

Yes,

    text( x, y, sprintf( '#%i', the_number_of_the_element ) )

where x and y are retrieved from fem.e - I guess

per isakson

Contact us