如何在Boost中访问现有图的子图

拉尔克沃特

我已经使用read_graphviz()阅读了一个图,并且知道该图包含子图。但是,我找不到Boost文档在哪里涵盖如何访问所述子图的地方。我只能找到create_subgraph(),它显然无法访问现有的子图。我想念什么?

提前致谢

看到

文件列出了这些成员函数,援助在子穿越/导航:

  • subgraph& root()

    返回子图树的根图。

  • bool is_root() const

    如果图是子图树的根,则返回true,否则返回false。

  • subgraph& parent()

    返回父图。

  • std::pair<children_iterator, children_iterator> children() const

    返回用于访问子图子的迭代器对。

以我对Graphviz支持的子图更完整的演示(此处为Boost.Graph和Graphviz嵌套子图)为基础的示例,这是一个简单的演示:

生活在Coliru

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/subgraph.hpp>
#include <iostream>

template <typename SubGraph> SubGraph create_data()
{
    enum { A,B,C,D,E,F,N }; // main edges
    SubGraph main(N);

    SubGraph& sub1 = main.create_subgraph();
    SubGraph& sub2 = main.create_subgraph();

    auto A1 = add_vertex(A, sub1);
    auto B1 = add_vertex(B, sub1);

    auto E2 = add_vertex(E, sub2);
    auto C2 = add_vertex(C, sub2);
    auto F2 = add_vertex(F, sub2);

    add_edge(A1, B1, sub1);
    add_edge(E2, F2, sub2);
    add_edge(C2, F2, sub2);

    add_edge(E, B, main);
    add_edge(B, C, main);
    add_edge(B, D, main);
    add_edge(F, D, main);

    // setting some graph viz attributes
    get_property(main, boost::graph_name) = "G0";
    get_property(sub1, boost::graph_name) = "clusterG1";
    get_property(sub2, boost::graph_name) = "clusterG2";

    return main;
}

using Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, 
        boost::no_property,
        boost::property<boost::edge_index_t, int>,
        boost::property<boost::graph_name_t, std::string>
    >;

template <typename G>
void list_nested(boost::subgraph<G>& g, std::string const& prefix = "") {
    std::cout << prefix
        << " * " << get_property(g, boost::graph_name)
        << " (" << num_vertices(g) << "+" << num_edges(g) << " v+e)"
        << "\n";
    for (auto& child : make_iterator_range(g.children())) {
        list_nested(child, " -");
    }
}

int main() {
    auto g = create_data<boost::subgraph<Graph> >();
    list_nested(g);
}

版画

 * G0 (6+7 v+e)
 - * clusterG1 (2+1 v+e)
 - * clusterG2 (3+2 v+e)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改现有轴的matplotlib子图投影?

来自分类Dev

如何在QtCharts中添加子图?

来自分类Dev

如何在子图图中创建图?

来自分类Dev

图:如何在现有容器上运行命令?

来自分类Dev

如何在Matplotlib中使用subplot2grid / gridspec检索现有的子图轴?

来自分类Dev

子图如何工作,MATLAB中的子图(121)和子图(1,2,1)有什么区别?

来自分类Dev

子图如何工作,MATLAB中的子图(121)和子图(1,2,1)有什么区别?

来自分类Dev

如何从 D3 中的现有面积图制作堆积面积图

来自分类Dev

如何在matplotlib中创建具有不同wspace的子图?

来自分类Dev

如何在R中访问树状图的属性

来自分类Dev

如何在R中访问树状图的属性

来自分类Dev

如何在增强图拓扑布局中访问坐标?

来自分类Dev

如何从现有组件图中获取具有给定边数的随机组件子图?

来自分类Dev

如何在MATLAB图形中设置子图大小?

来自分类Dev

如何在R降价(bookdown)中添加子图

来自分类Dev

如何在Matlab中更改子图的单个条形颜色

来自分类Dev

如何在画布中隐藏动画子图

来自分类Dev

如何在pyplot中绘制连接子图的线?

来自分类Dev

如何在graphviz中设置子图宽度?

来自分类Dev

如何在MATLAB中仅显示条形图x轴上的现有数据点?

来自分类Dev

子图访问控制

来自分类Dev

如何在python中创建分组条形图的子图

来自分类Dev

如何在gnuplot多图模式下选择子图

来自分类Dev

如何在matplotlip中注释热图的子图

来自分类Dev

如何在gnuplot多图模式下选择子图

来自分类Dev

如何在gnuplot的多图模式下缩放子图?

来自分类Dev

Matplotlib将子图绘制到现有图形

来自分类Dev

更改现有matplotlib图的颜色图

来自分类Dev

如何在Matlab中绘制有向图?

Related 相关文章

  1. 1

    如何更改现有轴的matplotlib子图投影?

  2. 2

    如何在QtCharts中添加子图?

  3. 3

    如何在子图图中创建图?

  4. 4

    图:如何在现有容器上运行命令?

  5. 5

    如何在Matplotlib中使用subplot2grid / gridspec检索现有的子图轴?

  6. 6

    子图如何工作,MATLAB中的子图(121)和子图(1,2,1)有什么区别?

  7. 7

    子图如何工作,MATLAB中的子图(121)和子图(1,2,1)有什么区别?

  8. 8

    如何从 D3 中的现有面积图制作堆积面积图

  9. 9

    如何在matplotlib中创建具有不同wspace的子图?

  10. 10

    如何在R中访问树状图的属性

  11. 11

    如何在R中访问树状图的属性

  12. 12

    如何在增强图拓扑布局中访问坐标?

  13. 13

    如何从现有组件图中获取具有给定边数的随机组件子图?

  14. 14

    如何在MATLAB图形中设置子图大小?

  15. 15

    如何在R降价(bookdown)中添加子图

  16. 16

    如何在Matlab中更改子图的单个条形颜色

  17. 17

    如何在画布中隐藏动画子图

  18. 18

    如何在pyplot中绘制连接子图的线?

  19. 19

    如何在graphviz中设置子图宽度?

  20. 20

    如何在MATLAB中仅显示条形图x轴上的现有数据点?

  21. 21

    子图访问控制

  22. 22

    如何在python中创建分组条形图的子图

  23. 23

    如何在gnuplot多图模式下选择子图

  24. 24

    如何在matplotlip中注释热图的子图

  25. 25

    如何在gnuplot多图模式下选择子图

  26. 26

    如何在gnuplot的多图模式下缩放子图?

  27. 27

    Matplotlib将子图绘制到现有图形

  28. 28

    更改现有matplotlib图的颜色图

  29. 29

    如何在Matlab中绘制有向图?

热门标签

归档