Thanks for the question. No, there is nothing fundamentally special that should make plotting difficult.
The graph is bipartite: variable nodes and factor nodes are stored separately, and edges connect variables to factors. A simple first step would probably be Graphviz support, for example by exporting the factor graph to DOT format. This would provide basic visualization without introducing a heavy plotting dependency.
Later, a Graphs.jl-compatible conversion could also be useful, together with node metadata such as variable/factor type and labels.
For that specific use case, BeliefPropagation.jl is probably a very strong baseline.
FactorGraph.jl is intended to be more general-purpose. It uses an explicit factor graph architecture where variable nodes and factor nodes can be added and modified easily, which makes it convenient for experimentation, different factor types, schedules, and model updates.
The trade-off is that a specialized structure for large discrete models with mostly unary and binary factors can likely be faster and more memory efficient than this more general architecture. So for that exact setting, the advantage of FactorGraph.jl would mainly be flexibility rather than raw speed.
Thank you for raising this point and for the very useful suggestion. We have added dependency-free SVG visualization to the FactorGraph package, allowing users to inspect Gaussian and discrete factor graphs directly without requiring external plotting dependencies.