Giter Club home page Giter Club logo

Comments (32)

pratikvasani avatar pratikvasani commented on August 26, 2024 1

@cpettitt are you planning to add cluster support anytime soon ?

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

Currently investigating this using a few different sources:

  1. Sander, "Layout of Compound Directed Graphs"
  2. Forster, "Applying Crossing Reduction Strategies to Layered Compound Graphs"
  3. Forster, "A Fast and Simple Heuristic for Constrained Two-Level Crossing Reduction"

from dagre.

aaronkrolik avatar aaronkrolik commented on August 26, 2024

Is there currently support for a subgraph feature?

Thanks

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

@aaronkrolik, not yet, unfortunately.

from dagre.

aaronkrolik avatar aaronkrolik commented on August 26, 2024

I noticed dig.js had support for subgraphs. Would it be difficult to implement that feature in dagre? I am willing to work on an implementation with a little instruction.

from dagre.

shamsian avatar shamsian commented on August 26, 2024

Any work on this? Any possibility of support for subgraphs soon?

from dagre.

Crashthatch avatar Crashthatch commented on August 26, 2024

+1

from dagre.

nize avatar nize commented on August 26, 2024

+1

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

+1 for me too! :) This stalled for quite some time due to lack of time on my part, but I have had time over the last week to make some progress on this. There's still a fair amount of work to do, but at least this is getting attention now.

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

Progress update:

  • We can describe clusters with the subgraph feature of graphlib's CGraph and CDigraph.
  • I just added support for constrained ordering (#84).

Remaining work: graph preprocessing, graph post-processing, and renderer changes.

from dagre.

nize avatar nize commented on August 26, 2024

Even though I am not I understand the progress in detail, but just to check: will we be able to do stuff like in this link when this issue is closed?
http://www.graphviz.org/Gallery/directed/cluster.html

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

Yes, the goal of this ticket is to be able to group a subgraph in a rectangular area separate from nodes not in the subgraph. Edges can cross subgraph boundaries.

from dagre.

nlewo avatar nlewo commented on August 26, 2024

Do you have some informations about the progress of clustering feature?

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

We have a first pass at clustering on the cluster3 branch. There are a number of edge cases and bugs that need to be addressed before this makes it to master. I've opened tickets and tagged them with "cluster" if they support this goal. Feel free to give the branch a try and if you find issues not already reported in the ticket system, please add them. Also if you're using it and it is working OK for your case that would also be helpful feedback. Thanks!

from dagre.

coopermj avatar coopermj commented on August 26, 2024

Just curious if work is continuing on cluster3 — I'd love to have containment, but there are features implemented in the main branch now that I can't live without.

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

Hi coopermj,

I've been crazy busy again, so I haven't had time to work on it. I'd be happy to help somebody get the clustering branch caught up to master and to address some of the remaining issues on the clustering branch, but I don't have a lot of time to drive it forward myself right now.

from dagre.

d2lam avatar d2lam commented on August 26, 2024

+1
It would be awesome if we have this feature.

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024

I was going to open a new Issue - but will hijack this one instead! Firstly I want to thank you for the subgraph/cluster support that is there (once I worked out it even exists!).

Now to the issue (minor) - the subgraph boxes seem to be too wide in certain situations:
pad_2
pad_01

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024

And a more extreme example (I think the subgraph is expanding to include some of edge control points?
image

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

@GordonSmith that is a known issue and one of the reasons I'm keeping this ticket open. It's actually not a difficult problem to fix; I just need some time to do it. I hope to get it over the upcoming holiday break.

A little more context in case someone wants to take a stab at it before I get to it:

The bk positioner (lib/position/bk.js) minimizes horizontal space for the graph by shifting blocks of nodes horizontally such that they are close to other nodes while still respecting minimum separation. The positioner doesn't know anything about cluster border nodes, so does not treat them optimally. Instead of keeping them tight to the container clusters nodes, the borders will sometimes expand to the nearest neighbor. I'd like to do another pass to "shrinkwrap" border nodes around their cluster nodes.

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024

If the correct solution is to just calculate the bounds of the contents and add a margin (as a final step) then I might try and have a look at it (I have an ideal spot to do that in my wrapper layers, but that wouldn't be appropriate here...) - BTW very kewl that it is working as well as it is (I am replacing an old ActiveX/NPAPI control which wrapped GraphViz and rendered in c++ - but with chrome dropping NPAPI support this seems to be by far the best option)!!!

Also if anyone is interested, the above "widget" is part of an open source visualization framework I am cobbling together (http://rawgit.com/hpcc-systems/Visualization/master/demos/test.html).

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

81c5a27 should fix the issue of having lots of open space in the clusters. I tried it on a few cases, but please give it a go with yours and let me know how it goes. For the moment you'll need to build dagre to try it out - I can paste a version with the fix if that is easier.

This change does not address the wide cluster borders due to edge control points. I need to think about that one a little more. In many cases you want the control points in the cluster, but as in your example above there are exceptions to that guideline!

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024

Why would you want edge control points within a cluster (the only reason I can think of is when the source and target both exist within that cluster)?

Your "fix" seems to be backwards - IOW it seems to use the extra space to spread out the nodes, rather than contracting the cluster?

Before:
image
After:
image

Before:
image
After:
image

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

@GordonSmith you also want the control points in the cluster because it keeps the edges straight when they pass through the upper or lower boundary of the cluster. If you force them outside of the cluster then all edges immediately go outside the cluster on the left or right side and then come back in the same way, versus going straight down as they do now. I'm not sure the explanation is clear - if it would help, I could switch it and show you what it looks like.

Regarding the latest version, yes that looks like a step backwards. It would be super helpful if you could get me one of the graphs with a problem in a DOT or JSON format for me to play with.

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024

@cpettitt This is from your graphlib.json.write function:

{
  "options": {
    "directed": true,
    "multigraph": true,
    "compound": true
  },
  "nodes": [
    {
      "v": "_w478",
      "value": "Projected\nCsv Read\n'...::POSITWEETS'",
      "parent": "_w949"
    },
    {
      "v": "_w481",
      "value": "Projected\nCsv Read\n'...::NEGATWEETS'",
      "parent": "_w949"
    },
    {
      "v": "_w484",
      "value": "Funnel",
      "parent": "_w949"
    },
    {
      "v": "_w487",
      "value": "Count Project",
      "parent": "_w949"
    },
    {
      "v": "_w490",
      "value": "Spill",
      "parent": "_w949"
    },
    {
      "v": "_w493",
      "value": "Project",
      "parent": "_w949"
    },
    {
      "v": "_w496",
      "value": "Normalize",
      "parent": "_w949"
    },
    {
      "v": "_w499",
      "value": "Spill",
      "parent": "_w949"
    },
    {
      "v": "_w502",
      "value": "Sort",
      "parent": "_w949"
    },
    {
      "v": "_w505",
      "value": "Group",
      "parent": "_w949"
    },
    {
      "v": "_w508",
      "value": "Grouped Aggregate",
      "parent": "_w949"
    },
    {
      "v": "_w511",
      "value": "Group",
      "parent": "_w949"
    },
    {
      "v": "_w514",
      "value": "Grouped Aggregate",
      "parent": "_w949"
    },
    {
      "v": "_w517",
      "value": "Spill",
      "parent": "_w949"
    },
    {
      "v": "_w520",
      "value": "Count",
      "parent": "_w949"
    },
    {
      "v": "_w523",
      "value": "Store\nInternal('a1')",
      "parent": "_w949"
    },
    {
      "v": "_w526",
      "value": "Disk Read\nSpill",
      "parent": "_w950"
    },
    {
      "v": "_w529",
      "value": "Sort",
      "parent": "_w950"
    },
    {
      "v": "_w532",
      "value": "Count Project",
      "parent": "_w950"
    },
    {
      "v": "_w535",
      "value": "Disk Write\nSpill File",
      "parent": "_w950"
    },
    {
      "v": "_w538",
      "value": "Disk Read\nSpill",
      "parent": "_w951"
    },
    {
      "v": "_w541",
      "value": "Disk Read\nSpill",
      "parent": "_w951"
    },
    {
      "v": "_w544",
      "value": "Lookup Join",
      "parent": "_w951"
    },
    {
      "v": "_w547",
      "value": "Disk Read\nSpill",
      "parent": "_w951"
    },
    {
      "v": "_w550",
      "value": "Sort",
      "parent": "_w951"
    },
    {
      "v": "_w553",
      "value": "Group",
      "parent": "_w951"
    },
    {
      "v": "_w556",
      "value": "Disk Read\nSpill",
      "parent": "_w951"
    },
    {
      "v": "_w559",
      "value": "Sort",
      "parent": "_w951"
    },
    {
      "v": "_w562",
      "value": "Group",
      "parent": "_w951"
    },
    {
      "v": "_w565",
      "value": "Join",
      "parent": "_w951"
    },
    {
      "v": "_w568",
      "value": "If",
      "parent": "_w951"
    },
    {
      "v": "_w571",
      "value": "Sort",
      "parent": "_w951"
    },
    {
      "v": "_w574",
      "value": "Group",
      "parent": "_w951"
    },
    {
      "v": "_w577",
      "value": "Grouped Aggregate",
      "parent": "_w951"
    },
    {
      "v": "_w580",
      "value": "Project",
      "parent": "_w951"
    },
    {
      "v": "_w583",
      "value": "Group",
      "parent": "_w951"
    },
    {
      "v": "_w586",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w951"
    },
    {
      "v": "_w589",
      "value": "Spill",
      "parent": "_w951"
    },
    {
      "v": "_w592",
      "value": "Sort",
      "parent": "_w951"
    },
    {
      "v": "_w595",
      "value": "Group",
      "parent": "_w951"
    },
    {
      "v": "_w598",
      "value": "Join",
      "parent": "_w951"
    },
    {
      "v": "_w601",
      "value": "Hash Aggregate",
      "parent": "_w951"
    },
    {
      "v": "_w604",
      "value": "Disk Write\nSpill File",
      "parent": "_w951"
    },
    {
      "v": "_w607",
      "value": "Disk Grouped Aggregate\nSpill",
      "parent": "_w952"
    },
    {
      "v": "_w610",
      "value": "Disk Grouped Aggregate\nSpill",
      "parent": "_w952"
    },
    {
      "v": "_w613",
      "value": "Spill",
      "parent": "_w952"
    },
    {
      "v": "_w616",
      "value": "All Join",
      "parent": "_w952"
    },
    {
      "v": "_w619",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w952"
    },
    {
      "v": "_w622",
      "value": "Lookup Join",
      "parent": "_w952"
    },
    {
      "v": "_w625",
      "value": "Disk Write\nSpill File",
      "parent": "_w952"
    },
    {
      "v": "_w628",
      "value": "Disk Read\nSpill",
      "parent": "_w953"
    },
    {
      "v": "_w631",
      "value": "Disk Grouped Aggregate\nSpill",
      "parent": "_w953"
    },
    {
      "v": "_w634",
      "value": "Lookup Join",
      "parent": "_w953"
    },
    {
      "v": "_w637",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w953"
    },
    {
      "v": "_w640",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w953"
    },
    {
      "v": "_w643",
      "value": "Group",
      "parent": "_w953"
    },
    {
      "v": "_w646",
      "value": "Grouped Aggregate",
      "parent": "_w953"
    },
    {
      "v": "_w649",
      "value": "All Join",
      "parent": "_w953"
    },
    {
      "v": "_w652",
      "value": "Funnel",
      "parent": "_w953"
    },
    {
      "v": "_w655",
      "value": "Count Project",
      "parent": "_w953"
    },
    {
      "v": "_w658",
      "value": "Normalize",
      "parent": "_w953"
    },
    {
      "v": "_w661",
      "value": "Disk Write\n'~SENTILYZE::TRAINER::BAYESMODEL__p436057190'",
      "parent": "_w953"
    },
    {
      "v": "_w948",
      "value": "_w948"
    },
    {
      "v": "_w949",
      "value": "_w949",
      "parent": "_w948"
    },
    {
      "v": "_w950",
      "value": "_w950",
      "parent": "_w948"
    },
    {
      "v": "_w951",
      "value": "_w951",
      "parent": "_w948"
    },
    {
      "v": "_w952",
      "value": "_w952",
      "parent": "_w948"
    },
    {
      "v": "_w953",
      "value": "_w953",
      "parent": "_w948"
    }
  ],
  "edges": [
    {
      "v": "_w478",
      "w": "_w484",
      "value": "_w664"
    },
    {
      "v": "_w481",
      "w": "_w484",
      "value": "_w668"
    },
    {
      "v": "_w484",
      "w": "_w487",
      "value": "_w672"
    },
    {
      "v": "_w487",
      "w": "_w490",
      "value": "_w676"
    },
    {
      "v": "_w490",
      "w": "_w493",
      "value": "_w680"
    },
    {
      "v": "_w493",
      "w": "_w496",
      "value": "_w684"
    },
    {
      "v": "_w496",
      "w": "_w499",
      "value": "_w688"
    },
    {
      "v": "_w499",
      "w": "_w502",
      "value": "_w692"
    },
    {
      "v": "_w502",
      "w": "_w505",
      "value": "_w696"
    },
    {
      "v": "_w505",
      "w": "_w508",
      "value": "_w700"
    },
    {
      "v": "_w508",
      "w": "_w511",
      "value": "_w704"
    },
    {
      "v": "_w511",
      "w": "_w514",
      "value": "_w708"
    },
    {
      "v": "_w514",
      "w": "_w517",
      "value": "_w712"
    },
    {
      "v": "_w517",
      "w": "_w520",
      "value": "_w716"
    },
    {
      "v": "_w520",
      "w": "_w523",
      "value": "_w720"
    },
    {
      "v": "_w526",
      "w": "_w529",
      "value": "_w724"
    },
    {
      "v": "_w529",
      "w": "_w532",
      "value": "_w728"
    },
    {
      "v": "_w532",
      "w": "_w535",
      "value": "_w732"
    },
    {
      "v": "_w538",
      "w": "_w544",
      "value": "_w736"
    },
    {
      "v": "_w541",
      "w": "_w544",
      "value": "_w740"
    },
    {
      "v": "_w547",
      "w": "_w550",
      "value": "_w744"
    },
    {
      "v": "_w550",
      "w": "_w553",
      "value": "_w748"
    },
    {
      "v": "_w556",
      "w": "_w559",
      "value": "_w752"
    },
    {
      "v": "_w559",
      "w": "_w562",
      "value": "_w756"
    },
    {
      "v": "_w553",
      "w": "_w565",
      "value": "_w760"
    },
    {
      "v": "_w562",
      "w": "_w565",
      "value": "_w764"
    },
    {
      "v": "_w544",
      "w": "_w568",
      "value": "_w768"
    },
    {
      "v": "_w565",
      "w": "_w568",
      "value": "_w772"
    },
    {
      "v": "_w568",
      "w": "_w571",
      "value": "_w776"
    },
    {
      "v": "_w571",
      "w": "_w574",
      "value": "_w780"
    },
    {
      "v": "_w574",
      "w": "_w577",
      "value": "_w784"
    },
    {
      "v": "_w577",
      "w": "_w580",
      "value": "_w788"
    },
    {
      "v": "_w580",
      "w": "_w583",
      "value": "_w792"
    },
    {
      "v": "_w586",
      "w": "_w589",
      "value": "_w796"
    },
    {
      "v": "_w589",
      "w": "_w592",
      "value": "_w800"
    },
    {
      "v": "_w592",
      "w": "_w595",
      "value": "_w804"
    },
    {
      "v": "_w583",
      "w": "_w598",
      "value": "_w808"
    },
    {
      "v": "_w595",
      "w": "_w598",
      "value": "_w812"
    },
    {
      "v": "_w598",
      "w": "_w601",
      "value": "_w816"
    },
    {
      "v": "_w601",
      "w": "_w604",
      "value": "_w820"
    },
    {
      "v": "_w610",
      "w": "_w613",
      "value": "_w824"
    },
    {
      "v": "_w607",
      "w": "_w616",
      "value": "_w828"
    },
    {
      "v": "_w613",
      "w": "_w616",
      "value": "_w832"
    },
    {
      "v": "_w616",
      "w": "_w622",
      "value": "_w836"
    },
    {
      "v": "_w619",
      "w": "_w622",
      "value": "_w840"
    },
    {
      "v": "_w622",
      "w": "_w625",
      "value": "_w844"
    },
    {
      "v": "_w628",
      "w": "_w634",
      "value": "_w848"
    },
    {
      "v": "_w631",
      "w": "_w634",
      "value": "_w852"
    },
    {
      "v": "_w640",
      "w": "_w643",
      "value": "_w856"
    },
    {
      "v": "_w643",
      "w": "_w646",
      "value": "_w860"
    },
    {
      "v": "_w637",
      "w": "_w649",
      "value": "_w864"
    },
    {
      "v": "_w646",
      "w": "_w649",
      "value": "_w868"
    },
    {
      "v": "_w634",
      "w": "_w652",
      "value": "_w872"
    },
    {
      "v": "_w649",
      "w": "_w652",
      "value": "_w876"
    },
    {
      "v": "_w652",
      "w": "_w655",
      "value": "_w880"
    },
    {
      "v": "_w655",
      "w": "_w658",
      "value": "_w884"
    },
    {
      "v": "_w658",
      "w": "_w661",
      "value": "_w888"
    },
    {
      "v": "_w517",
      "w": "_w526",
      "value": "_w892"
    },
    {
      "v": "_w499",
      "w": "_w538",
      "value": "_w896"
    },
    {
      "v": "_w535",
      "w": "_w541",
      "value": "_w900"
    },
    {
      "v": "_w499",
      "w": "_w547",
      "value": "_w904"
    },
    {
      "v": "_w535",
      "w": "_w556",
      "value": "_w908"
    },
    {
      "v": "_w523",
      "w": "_w568",
      "value": "_w912"
    },
    {
      "v": "_w490",
      "w": "_w586",
      "value": "_w916"
    },
    {
      "v": "_w604",
      "w": "_w607",
      "value": "_w920"
    },
    {
      "v": "_w589",
      "w": "_w610",
      "value": "_w924"
    },
    {
      "v": "_w604",
      "w": "_w619",
      "value": "_w928"
    },
    {
      "v": "_w625",
      "w": "_w628",
      "value": "_w932"
    },
    {
      "v": "_w625",
      "w": "_w631",
      "value": "_w936"
    },
    {
      "v": "_w613",
      "w": "_w637",
      "value": "_w940"
    },
    {
      "v": "_w613",
      "w": "_w640",
      "value": "_w944"
    }
  ]
}

from dagre.

GordonSmith avatar GordonSmith commented on August 26, 2024
{
  "options": {
    "directed": true,
    "multigraph": true,
    "compound": true
  },
  "nodes": [
    {
      "v": "_w1417",
      "value": "Disk Count\n'...::VOCABULARY__p2621957508'",
      "parent": "_w1871"
    },
    {
      "v": "_w1420",
      "value": "Store\nInternal('a2')",
      "parent": "_w1871"
    },
    {
      "v": "_w1423",
      "value": "Projected\nDisk Read\n'...::BAYESMODEL__p436057190'",
      "parent": "_w1872"
    },
    {
      "v": "_w1426",
      "value": "Sort",
      "parent": "_w1872"
    },
    {
      "v": "_w1429",
      "value": "Group",
      "parent": "_w1872"
    },
    {
      "v": "_w1432",
      "value": "Grouped Aggregate",
      "parent": "_w1872"
    },
    {
      "v": "_w1435",
      "value": "Project",
      "parent": "_w1872"
    },
    {
      "v": "_w1438",
      "value": "Group",
      "parent": "_w1872"
    },
    {
      "v": "_w1441",
      "value": "Projected\nDisk Read\n'...::BAYESMODEL__p436057190'",
      "parent": "_w1872"
    },
    {
      "v": "_w1444",
      "value": "Sort",
      "parent": "_w1872"
    },
    {
      "v": "_w1447",
      "value": "Group",
      "parent": "_w1872"
    },
    {
      "v": "_w1450",
      "value": "Denormalize",
      "parent": "_w1872"
    },
    {
      "v": "_w1453",
      "value": "Project",
      "parent": "_w1872"
    },
    {
      "v": "_w1456",
      "value": "Disk Write\nSpill File",
      "parent": "_w1872"
    },
    {
      "v": "_w1459",
      "value": "Read\nSTORED('t')",
      "parent": "_w1873"
    },
    {
      "v": "_w1462",
      "value": "Project",
      "parent": "_w1873"
    },
    {
      "v": "_w1465",
      "value": "Normalize",
      "parent": "_w1873"
    },
    {
      "v": "_w1468",
      "value": "Disk Write\nSpill File",
      "parent": "_w1873"
    },
    {
      "v": "_w1471",
      "value": "Disk Read\nSpill",
      "parent": "_w1874"
    },
    {
      "v": "_w1474",
      "value": "Projected\nDisk Read\n'...::VOCABULARY__p2621957508'",
      "parent": "_w1874"
    },
    {
      "v": "_w1477",
      "value": "Lookup Join",
      "parent": "_w1874"
    },
    {
      "v": "_w1480",
      "value": "Disk Read\nSpill",
      "parent": "_w1874"
    },
    {
      "v": "_w1483",
      "value": "Sort",
      "parent": "_w1874"
    },
    {
      "v": "_w1486",
      "value": "Group",
      "parent": "_w1874"
    },
    {
      "v": "_w1489",
      "value": "Projected\nDisk Read\n'...::VOCABULARY__p2621957508'",
      "parent": "_w1874"
    },
    {
      "v": "_w1492",
      "value": "Sort",
      "parent": "_w1874"
    },
    {
      "v": "_w1495",
      "value": "Group",
      "parent": "_w1874"
    },
    {
      "v": "_w1498",
      "value": "Join",
      "parent": "_w1874"
    },
    {
      "v": "_w1501",
      "value": "If",
      "parent": "_w1874"
    },
    {
      "v": "_w1504",
      "value": "Sort",
      "parent": "_w1874"
    },
    {
      "v": "_w1507",
      "value": "Group",
      "parent": "_w1874"
    },
    {
      "v": "_w1510",
      "value": "Grouped Aggregate",
      "parent": "_w1874"
    },
    {
      "v": "_w1513",
      "value": "Project",
      "parent": "_w1874"
    },
    {
      "v": "_w1516",
      "value": "Disk Write\nSpill File",
      "parent": "_w1874"
    },
    {
      "v": "_w1519",
      "value": "Disk Read\nSpill",
      "parent": "_w1875"
    },
    {
      "v": "_w1522",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w1875"
    },
    {
      "v": "_w1525",
      "value": "Lookup Join",
      "parent": "_w1875"
    },
    {
      "v": "_w1528",
      "value": "Sort",
      "parent": "_w1875"
    },
    {
      "v": "_w1531",
      "value": "Group",
      "parent": "_w1875"
    },
    {
      "v": "_w1534",
      "value": "Grouped Aggregate",
      "parent": "_w1875"
    },
    {
      "v": "_w1537",
      "value": "Projected\nDisk Read\nSpill",
      "parent": "_w1875"
    },
    {
      "v": "_w1540",
      "value": "Sort",
      "parent": "_w1875"
    },
    {
      "v": "_w1543",
      "value": "Group",
      "parent": "_w1875"
    },
    {
      "v": "_w1546",
      "value": "Grouped Aggregate",
      "parent": "_w1875"
    },
    {
      "v": "_w1549",
      "value": "Lookup Join",
      "parent": "_w1875"
    },
    {
      "v": "_w1552",
      "value": "Filtered\nProjected\nDisk Read\nSpill",
      "parent": "_w1875"
    },
    {
      "v": "_w1555",
      "value": "Lookup Join",
      "parent": "_w1875"
    },
    {
      "v": "_w1558",
      "value": "Sort",
      "parent": "_w1875"
    },
    {
      "v": "_w1561",
      "value": "Dedup",
      "parent": "_w1875"
    },
    {
      "v": "_w1564",
      "value": "Project",
      "parent": "_w1875"
    },
    {
      "v": "_w1567",
      "value": "Rollup",
      "parent": "_w1875"
    },
    {
      "v": "_w1570",
      "value": "Spill",
      "parent": "_w1875"
    },
    {
      "v": "_w1573",
      "value": "Filtered Project",
      "parent": "_w1875"
    },
    {
      "v": "_w1576",
      "value": "Output\nInternal('a3')",
      "parent": "_w1875"
    },
    {
      "v": "_w1579",
      "value": "Filtered\nProjected\nDisk Read\nSpill",
      "parent": "_w1876"
    },
    {
      "v": "_w1582",
      "value": "Output\nInternal('a4')",
      "parent": "_w1876"
    },
    {
      "v": "_w1585",
      "value": "Read\nSTORED('t')",
      "parent": "_w1877"
    },
    {
      "v": "_w1588",
      "value": "Filtered Project",
      "parent": "_w1877"
    },
    {
      "v": "_w1591",
      "value": "Read\nSTORED('t')",
      "parent": "_w1877"
    },
    {
      "v": "_w1594",
      "value": "Filtered Project",
      "parent": "_w1877"
    },
    {
      "v": "_w1597",
      "value": "Funnel",
      "parent": "_w1877"
    },
    {
      "v": "_w1600",
      "value": "Firstn",
      "parent": "_w1877"
    },
    {
      "v": "_w1603",
      "value": "Output\nResult #1",
      "parent": "_w1877"
    },
    {
      "v": "_w1870",
      "value": "_w1870"
    },
    {
      "v": "_w1871",
      "value": "_w1871",
      "parent": "_w1870"
    },
    {
      "v": "_w1872",
      "value": "_w1872",
      "parent": "_w1870"
    },
    {
      "v": "_w1873",
      "value": "_w1873",
      "parent": "_w1870"
    },
    {
      "v": "_w1874",
      "value": "_w1874",
      "parent": "_w1870"
    },
    {
      "v": "_w1875",
      "value": "_w1875",
      "parent": "_w1870"
    },
    {
      "v": "_w1876",
      "value": "_w1876",
      "parent": "_w1870"
    },
    {
      "v": "_w1877",
      "value": "_w1877",
      "parent": "_w1870"
    }
  ],
  "edges": [
    {
      "v": "_w1417",
      "w": "_w1420",
      "value": "_w1606"
    },
    {
      "v": "_w1423",
      "w": "_w1426",
      "value": "_w1610"
    },
    {
      "v": "_w1426",
      "w": "_w1429",
      "value": "_w1614"
    },
    {
      "v": "_w1429",
      "w": "_w1432",
      "value": "_w1618"
    },
    {
      "v": "_w1432",
      "w": "_w1435",
      "value": "_w1622"
    },
    {
      "v": "_w1435",
      "w": "_w1438",
      "value": "_w1626"
    },
    {
      "v": "_w1441",
      "w": "_w1444",
      "value": "_w1630"
    },
    {
      "v": "_w1444",
      "w": "_w1447",
      "value": "_w1634"
    },
    {
      "v": "_w1438",
      "w": "_w1450",
      "value": "_w1638"
    },
    {
      "v": "_w1447",
      "w": "_w1450",
      "value": "_w1642"
    },
    {
      "v": "_w1450",
      "w": "_w1453",
      "value": "_w1646"
    },
    {
      "v": "_w1453",
      "w": "_w1456",
      "value": "_w1650"
    },
    {
      "v": "_w1459",
      "w": "_w1462",
      "value": "_w1654"
    },
    {
      "v": "_w1462",
      "w": "_w1465",
      "value": "_w1658"
    },
    {
      "v": "_w1465",
      "w": "_w1468",
      "value": "_w1662"
    },
    {
      "v": "_w1471",
      "w": "_w1477",
      "value": "_w1666"
    },
    {
      "v": "_w1474",
      "w": "_w1477",
      "value": "_w1670"
    },
    {
      "v": "_w1480",
      "w": "_w1483",
      "value": "_w1674"
    },
    {
      "v": "_w1483",
      "w": "_w1486",
      "value": "_w1678"
    },
    {
      "v": "_w1489",
      "w": "_w1492",
      "value": "_w1682"
    },
    {
      "v": "_w1492",
      "w": "_w1495",
      "value": "_w1686"
    },
    {
      "v": "_w1486",
      "w": "_w1498",
      "value": "_w1690"
    },
    {
      "v": "_w1495",
      "w": "_w1498",
      "value": "_w1694"
    },
    {
      "v": "_w1477",
      "w": "_w1501",
      "value": "_w1698"
    },
    {
      "v": "_w1498",
      "w": "_w1501",
      "value": "_w1702"
    },
    {
      "v": "_w1501",
      "w": "_w1504",
      "value": "_w1706"
    },
    {
      "v": "_w1504",
      "w": "_w1507",
      "value": "_w1710"
    },
    {
      "v": "_w1507",
      "w": "_w1510",
      "value": "_w1714"
    },
    {
      "v": "_w1510",
      "w": "_w1513",
      "value": "_w1718"
    },
    {
      "v": "_w1513",
      "w": "_w1516",
      "value": "_w1722"
    },
    {
      "v": "_w1519",
      "w": "_w1525",
      "value": "_w1726"
    },
    {
      "v": "_w1522",
      "w": "_w1525",
      "value": "_w1730"
    },
    {
      "v": "_w1525",
      "w": "_w1528",
      "value": "_w1734"
    },
    {
      "v": "_w1528",
      "w": "_w1531",
      "value": "_w1738"
    },
    {
      "v": "_w1531",
      "w": "_w1534",
      "value": "_w1742"
    },
    {
      "v": "_w1537",
      "w": "_w1540",
      "value": "_w1746"
    },
    {
      "v": "_w1540",
      "w": "_w1543",
      "value": "_w1750"
    },
    {
      "v": "_w1543",
      "w": "_w1546",
      "value": "_w1754"
    },
    {
      "v": "_w1534",
      "w": "_w1549",
      "value": "_w1758"
    },
    {
      "v": "_w1546",
      "w": "_w1549",
      "value": "_w1762"
    },
    {
      "v": "_w1549",
      "w": "_w1555",
      "value": "_w1766"
    },
    {
      "v": "_w1552",
      "w": "_w1555",
      "value": "_w1770"
    },
    {
      "v": "_w1555",
      "w": "_w1558",
      "value": "_w1774"
    },
    {
      "v": "_w1558",
      "w": "_w1561",
      "value": "_w1778"
    },
    {
      "v": "_w1561",
      "w": "_w1564",
      "value": "_w1782"
    },
    {
      "v": "_w1564",
      "w": "_w1567",
      "value": "_w1786"
    },
    {
      "v": "_w1567",
      "w": "_w1570",
      "value": "_w1790"
    },
    {
      "v": "_w1570",
      "w": "_w1573",
      "value": "_w1794"
    },
    {
      "v": "_w1573",
      "w": "_w1576",
      "value": "_w1798"
    },
    {
      "v": "_w1579",
      "w": "_w1582",
      "value": "_w1802"
    },
    {
      "v": "_w1585",
      "w": "_w1588",
      "value": "_w1806"
    },
    {
      "v": "_w1591",
      "w": "_w1594",
      "value": "_w1810"
    },
    {
      "v": "_w1588",
      "w": "_w1597",
      "value": "_w1814"
    },
    {
      "v": "_w1594",
      "w": "_w1597",
      "value": "_w1818"
    },
    {
      "v": "_w1597",
      "w": "_w1600",
      "value": "_w1822"
    },
    {
      "v": "_w1600",
      "w": "_w1603",
      "value": "_w1826"
    },
    {
      "v": "_w1468",
      "w": "_w1471",
      "value": "_w1830"
    },
    {
      "v": "_w1468",
      "w": "_w1480",
      "value": "_w1834"
    },
    {
      "v": "_w1420",
      "w": "_w1501",
      "value": "_w1838"
    },
    {
      "v": "_w1516",
      "w": "_w1519",
      "value": "_w1842"
    },
    {
      "v": "_w1456",
      "w": "_w1522",
      "value": "_w1846"
    },
    {
      "v": "_w1516",
      "w": "_w1537",
      "value": "_w1850"
    },
    {
      "v": "_w1456",
      "w": "_w1552",
      "value": "_w1854"
    },
    {
      "v": "_w1570",
      "w": "_w1579",
      "value": "_w1858"
    },
    {
      "v": "_w1576",
      "w": "_w1588",
      "value": "_w1862"
    },
    {
      "v": "_w1582",
      "w": "_w1594",
      "value": "_w1866"
    }
  ]
}

from dagre.

joshikeerti avatar joshikeerti commented on August 26, 2024

+1

from dagre.

bmedici avatar bmedici commented on August 26, 2024

@cpettitt hello, any news about clustering support and linking graphs and subgraphs ?

from dagre.

matthewatabet avatar matthewatabet commented on August 26, 2024

Hello! I'm very interested in cluster support and noticed this ticket for Dagre D3: https://dagrejs.github.io/project/dagre-d3/latest/demo/clusters.html

Does the same functionality exist in Dagre? I'm not using Dagre D3 for rendering.

from dagre.

cpettitt avatar cpettitt commented on August 26, 2024

Yes, dagre-d3 is using dagre to do the actual layout.

from dagre.

utkarshagarwal01 avatar utkarshagarwal01 commented on August 26, 2024

+1

from dagre.

rpelorosso avatar rpelorosso commented on August 26, 2024

Is there any way to add padding or margin to the clusters?

from dagre.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.