gtsam
Loading...
Searching...
No Matches
DotWriter.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010-2021, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
18
19#pragma once
20
22#include <gtsam/base/Vector.h>
23#include <gtsam/inference/Key.h>
24
25#include <iosfwd>
26#include <map>
27#include <set>
28#include <optional>
29
30namespace gtsam {
31
36struct GTSAM_EXPORT DotWriter {
43
48 std::map<Key, Vector2> variablePositions;
49
55 std::map<char, double> positionHints;
56
58 KeySet boxes;
59
64 std::map<size_t, Vector2> factorPositions;
65
66 explicit DotWriter(double figureWidthInches = 5,
67 double figureHeightInches = 5,
68 bool plotFactorPoints = true,
69 bool connectKeysToFactor = true, bool binaryEdges = false)
75
77 void graphPreamble(std::ostream* os) const;
78
80 void digraphPreamble(std::ostream* os) const;
81
83 void drawVariable(Key key, const KeyFormatter& keyFormatter,
84 const std::optional<Vector2>& position,
85 std::ostream* os) const;
86
88 static void DrawFactor(size_t i, const std::optional<Vector2>& position,
89 std::ostream* os);
90
92 std::optional<Vector2> variablePos(Key key) const;
93
95 void processFactor(size_t i, const KeyVector& keys,
96 const KeyFormatter& keyFormatter,
97 const std::optional<Vector2>& position,
98 std::ostream* os) const;
99};
100
101} // namespace gtsam
A thin wrapper around std::vector that uses a custom allocator.
typedef and functions to augment Eigen's VectorXd
Global functions in a separate testing namespace.
Definition chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
KeySet boxes
A set of keys that will be displayed as a box.
Definition DotWriter.h:58
double figureWidthInches
The figure width on paper in inches.
Definition DotWriter.h:37
bool plotFactorPoints
Plots each factor as a dot between the variables.
Definition DotWriter.h:39
bool connectKeysToFactor
Draw a line from each key within a factor to the dot of the factor.
Definition DotWriter.h:40
std::map< Key, Vector2 > variablePositions
Variable positions can be optionally specified and will be included in the dot file with a "!...
Definition DotWriter.h:48
bool binaryEdges
just use non-dotted edges for binary factors
Definition DotWriter.h:42
std::map< char, double > positionHints
The position hints allow one to use symbol character and index to specify position.
Definition DotWriter.h:55
std::map< size_t, Vector2 > factorPositions
Factor positions can be optionally specified and will be included in the dot file with a "!...
Definition DotWriter.h:64
double figureHeightInches
The figure height on paper in inches.
Definition DotWriter.h:38