[英]how to display grid graph using boost?
我想这样打印网格图。
我尝试了以下代码
#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);
}
并得到这样的输出。
我从上面的sehe的答案中学到了如何绘制矩形形状。 但是neato
总是给我一个倾斜的图。 要强制图形在水平方向上对齐其行,我们可以设置grah节点的pos
属性 。 我使用自定义属性编写器来做到这一点。 这是我的实现。
#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文档显示的图形相似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.