If there were a way to access the handles to the node label text objects, it would be easy to draw rectangels (or circles) around the labels. But I am not aware of such a method.
An alternative is to remove the node labels and add them back in as text objects. Then we would have the handles to the text objects and their coordinates, extent, etc. The demo below demonstrates how to do this. Note that this comes at a cost. The text objects acting as node labels are no longer associated with the nodes. So, if there's a change in the graph that causes a rearrangement of the nodes, the text objects will not follow.
A = triu(magic(4));
names = {'alpha' 'beta' 'gamma' 'delta'};
G = graph(A,names,'upper','omitselfloops');
h = plot(G);
NodeLabels = h.NodeLabel;
h.NodeLabel = repmat({''},size(h.NodeLabel));
buffer = range(xlim())*0.02;
text(h.XData + buffer, h.YData, NodeLabels, 'HorizontalAlignment', 'Left', ...
'VerticalAlignment', 'Middle', 'EdgeColor', 'k', 'FontSize', h.NodeFontSize, ...
'Color', 'k', 'FontName', h.NodeFontName);
Note that you can also set the BackgroundColor of the text objects.
Best Answer