我想像这样打印网格图。
我尝试了以下代码
#include <boost/graph/graphviz.hpp>
#include <boost/graph/grid_graph.hpp>
typedef boost::grid_graph<2> Grid;
int main()
{
boost::array<std::size_t, 2> lengths = { { 3, 5 } };
Grid grid(lengths);
std::ofstream gout;
gout.open("test.dot");
boost::write_graphviz(gout, grid);
}
得到这样的输出。
答案 0 :(得分:4)
答案 1 :(得分:0)
我学会了如何根据上面的答案绘制矩形。但是neato
总是给我一个倾斜的图形。要强制图形在水平方向上对齐其行,我们可以设置grah节点的pos
attribute。我使用自定义属性编写器来完成它。这是我的实施。
#include <iostream>
#include <boost/graph/grid_graph.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/array.hpp>
struct PosWriter
{
template <typename Vertex>
void operator()(std::ostream& out, const Vertex& v)
{
out << "[pos=\"" << v[0] << "," << v[1] << "\"]";
}
};
int main()
{
using Graph = boost::grid_graph<2>;
boost::array<std::size_t, 2> lengths = {5, 3};
Graph g(lengths);
std::ofstream file("grid.dot");
boost::write_graphviz(file, g, PosWriter());
return 0;
}
现在绘制的图表看起来与BGL文档显示的相似。