Changing the FontSize of Matlab diagraph plot

5 Ansichten (letzte 30 Tage)
Amir
Amir am 4 Jul. 2016
Beantwortet: Raimon Fabregat am 18 Mai 2017
Why I can not access any property of FontSize for each nodes in Matlab digraph?
h=figure;
G=digraph(pass_graph);
p=plot(G,'Layout','circle','EdgeLabel',G.Edges.Weight);
p.NodeColor = 'red';
G.Edges.LWidths = 18*G.Edges.Weight/max(G.Edges.Weight);
p.LineWidth = G.Edges.LWidths;
None of the conventional methods I know are working, such as :
fig=gcf;
set(findall(fig,'-property','FontSize'),'FontSize',22)
Or
p=plot(G,'Layout','circle','FontSize',22,'EdgeLabel',G.Edges.Weight);
As a matter of a fact, I don;t see any property for that:
Error using digraph/plot>checkinputnames (line 126)
Expected input number 4 to match one of these strings:
'ArrowSize', 'BusyAction', 'ButtonDownFcn', 'CreateFcn', 'DeleteFcn', 'DisplayName', 'EdgeAlpha', 'EdgeCData',
'EdgeColor', 'EdgeLabel', 'EdgeLabelMode', 'HandleVisibility', 'HitTest', 'Interruptible', 'LineStyle',
'LineWidth', 'Marker', 'MarkerSize', 'NodeCData', 'NodeColor', 'NodeLabel', 'NodeLabelMode', 'Parent',
'PickableParts', 'Selected', 'SelectionHighlight', 'ShowArrows', 'Tag', 'UIContextMenu', 'UserData', 'Visible',
'XData', 'YData', 'Layout', 'Dimension', 'Iterations', 'XStart', 'YStart', 'Direction', 'Sources', 'Sinks',
'AssignLayers'
The input, 'FontSize', did not match any of the valid strings.
Error in digraph/plot (line 80)
args = checkinputnames(args,nameOffset);
  2 Kommentare
Image Analyst
Image Analyst am 4 Jul. 2016
I don't see where you actually tried to access it. Where did you do that? Where did you want the text to be? I know for a fact that title(), xlabel(), ylabel(), and text() all take a 'FontSize' argument, but I don't see you using any of those.
Amir
Amir am 4 Jul. 2016
The text I am interested in changing are the Node text of the diagraph, which can't be modified apparently. Even by using matlap graphical figure interface, when I change all fonts, they are the same

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Prasad Mendu
Prasad Mendu am 19 Jul. 2016
GraphPlot does not support changing the fontsize and fontcolor of the text labels.
As a workaround, if you really need the custom text, grab the XData and YData coordinates from the GraphPlot object, do "hold on", and then superimpose their own custom text labels on the figure by using the TEXT function in MATLAB. Refer to the example below for reference:
% Custom colors from parula colormap and custom sizes between 12 and 20 pts
labelColors = parula(length(names));
labelSizes = randi([12 20], length(names), 1);
p.NodeLabel = {};
% Custom labels
hold on
for i=1:length(names)
text(p.XData(i), p.YData(i), names(i), 'Color', labelColors(i, :), 'FontSize', labelSizes(i));
end
hold off
  1 Kommentar
Amir
Amir am 19 Jul. 2016
Bearbeitet: Amir am 19 Jul. 2016
Nice workaround. that should work i guess.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Raimon Fabregat
Raimon Fabregat am 18 Mai 2017
What you can do is resize the figure and make it smaller. The font size of the labels will not get rescaled along and they will appear much bigger.

Kategorien

Mehr zu Graphics Object Properties finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by