Attach buttons to graph elements

26 views (last 30 days)
Timothy
Timothy on 14 Nov 2025
Edited: Voss on 25 Nov 2025
I've created an app using the app designer that creates a graph from user inputs with buttons for adding nodes and edges separately, updating the graph each time a node or edge is added. I want each node and edge to be clickable buttons which open a new dialogue in which additional data can be inputted and viewed in the form of a table or database. Any ideas on how I could achieve this?
The inputs occur like this currently in case it's helpful:
function NewNodeButtonPushed(app, event)
%get basic node data from user
nodetemp = inputdlg(["Node Name", "Latitude", "Longitude"], "Node Details");
%add code to start
nodeinp = addvars(cell2table(transpose(nodetemp),'VariableNames',{'Name','Latitude', ...
'Longitude'}), app.index, 'before', 1,'NewVariableNames',{'Code'});
%update graph with node data
app.NodeTable=[app.NodeTable; nodeinp];
%app.G=graph(app.EdgeTable,app.NodeTable);
app.G=addnode(app.G,nodeinp);
%display graph
plot(app.UIAxes,app.G,'NodeLabel',app.G.Nodes.Name,'EdgeLabel',app.G.Edges.Distance)%plot graph
app.UITable.Data = app.NodeTable;
app.index = app.index + 1; %increment node counter
end
  3 Comments
Timothy
Timothy on 18 Nov 2025
Is it possible to create callbacks for the nodes and edge presses or is it better to switch off the hit test property and treat it like a regular axes?
Voss
Voss on 25 Nov 2025
Edited: Voss on 25 Nov 2025

I haven't used a GraphPlot object before, but by my reading of the documentation, there doesn't appear to be a built-in way to distinguish which node/edge was clicked on.

If all else fails, yes, you should be able to turn HitTest off, capture the click by the axes, and do the necessary math to figure out what node or edge was clicked.

In fact, that's the approach I have always used, in professional software I've written in MATLAB, to do any mouse interaction with an object in an axes. I never use the object's ButtonDownFcn because I found it to be insufficient 20 years ago.

Sign in to comment.

Answers (0)

Categories

Find more on Graph and Network Algorithms in Help Center and File Exchange

Products


Release

R2025b

Community Treasure Hunt

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

Start Hunting!