-
Notifications
You must be signed in to change notification settings - Fork 134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Graphs with long edge labels become degenerated #628
Comments
* with many components of the same type, edge description gets much too long in graphs, * shorten very long items, add line breaks, and even drop items if too many see issue Fortran-FOSS-Programmers#293 see issue Fortran-FOSS-Programmers#628
The code in commit 185121f is a proof of concept, but works fine so far. |
Something a bit simpler that might be sufficient: modified ford/graphs.py
@@ -450,11 +450,11 @@ class TypeNode(BaseNode):
node.visible = getattr(proto, "visible", True)
if self in node.comp_of:
- node.comp_of[self] += ", " + var.name
+ node.comp_of[self] += f"\n{var.name}"
else:
node.comp_of[self] = var.name
if node in self.comp_types:
- self.comp_types[node] += ", " + var.name
+ self.comp_types[node] += f"\n{var.name}"
else:
self.comp_types[node] = var.name
|
This stacks names in a column, instead of printing them in a row, right? I have tried this, and it is definitely an improvement. But from looking at some of my graphs, I concluded that a compact box (a few lines with restricted width) uses the typical real estate in a graph optimally. That's why I arrived at my rather complex logic. I definitely would restrict the size of the label horizontally as well as vertically if there are too many items to avoid degenerating the graph. |
Have you looked at I do also think the graphs should be comprehensive rather than compact, so I don't think it should cut off components. |
Thanks for pointing to this module, did not know about it. Indeed something like This is not about having compact graphs. It is about having readable graphs. I have already replaced the container by a container-fluid to really use my screen size for graphs, otherwise most graphs are unusable, see #293. With long edges (or long nodes), the whole graph shrinks and labels become unreadable without zooming. One could question whether nesting levels greater than 2 or 3 are really necessary. But it really helps with refactoring and decoupling in a matured and grown code base. |
If a derived type has many components of the same type, inheritance graphs becomes degenerated, as edges length depends on length of label. In order to handle this, I added linebreaks. Additionally items from the label list are dropped if there are too many (more than 3 lines of width 40 required).
Here is a contrived example module
The text was updated successfully, but these errors were encountered: