Undirected Bipartite Graph Revisited

Tasks

1. add nodes A-J 2. add a constraint that nodes A-E are at the same horizontal coordinate 3. add a constraint that nodes F-J are at the same horizontal coordinate 4. add a constraint that nodes A-E are all to the left of nodes F-J 5. define a style called left that has node shape triangle with node size 2 and fill color tomato 6. define a style called right that has node shape circle with node size 2 and fill color green 7. apply the left style to nodes A, B, C, D, and E 8. apply the right style to nodes F, G, H, I, and J 9. add edges from node A to nodes F, G, and J 10. add edges from node B to nodes G and J 11. add edges from node C to each of the nodes F, G, H, I, and J 12. add edges from node D to nodes G and H 13. add edges from node E to nodes G and H 14. make the edges thin with color steelblue 15. make node I a rectangle will fill color yellow :config draft false

JSON Representation

{
"directed": false,
"hasParents": false,
"nodes": {
  "A": {
    "style": "left"
  },
  "B": {
    "style": "left"
  },
  "C": {
    "style": "left"
  },
  "D": {
    "style": "left"
  },
  "E": {
    "style": "left"
  },
  "F": {
    "style": "right"
  },
  "G": {
    "style": "right"
  },
  "H": {
    "style": "right"
  },
  "I": {
    "style": "right"
  },
  "J": {
    "style": "right"
  }
},
"edges": {
  "AF": {
    "source": "A",
    "target": "F"
  },
  "AG": {
    "source": "A",
    "target": "G"
  },
  "AJ": {
    "source": "A",
    "target": "J"
  },
  "BG": {
    "source": "B",
    "target": "G"
  },
  "BJ": {
    "source": "B",
    "target": "J"
  },
  "CF": {
    "source": "C",
    "target": "F"
  },
  "CG": {
    "source": "C",
    "target": "G"
  },
  "CH": {
    "source": "C",
    "target": "H"
  },
  "CI": {
    "source": "C",
    "target": "I"
  },
  "CJ": {
    "source": "C",
    "target": "J"
  },
  "DG": {
    "source": "D",
    "target": "G"
  },
  "DH": {
    "source": "D",
    "target": "H"
  },
  "EG": {
    "source": "E",
    "target": "G"
  },
  "EH": {
    "source": "E",
    "target": "H"
  }
},
"constraints": [
  {
    "meaning": "Nodes A-E are at the same horizontal coordinate",
    "constraints": [
      "A.x               =               B.x",
      "A.x               =               C.x",
      "A.x               =               D.x",
      "A.x               =               E.x"
    ]
  },
  {
    "meaning": "Nodes F-J are at the same horizontal coordinate",
    "constraints": [
      "F.x              =              G.x",
      "F.x              =              H.x",
      "F.x              =              I.x",
      "F.x              =              J.x"
    ]
  },
  {
    "meaning": "Nodes A-E are all to the left of nodes F-J",
    "constraints": [
      "A.x <= F.x",
      "B.x <= F.x",
      "C.x <= F.x",
      "D.x <= F.x",
      "E.x <= F.x"
    ]
  }
],
"styles": {
  "left": {
    "nodeShape": "triangle",
    "nodeSize": 2,
    "fillColor": "tomato",
    "lineWidth": "thin",
    "lineColor": "steelblue"
  },
  "right": {
    "nodeShape": "circle",
    "nodeSize": 2,
    "fillColor": "green",
    "lineWidth": "thin",
    "lineColor": "steelblue"
  }
},
"_positions": {
  "A": [
    -4.083416498552114,
    -7.587378634673035
  ],
  "B": [
    -4.083416498552118,
    -0.0011469352178384575
  ],
  "C": [
    -4.083416498552117,
    7.585439723368475
  ],
  "D": [
    -4.083416498552114,
    3.6403877047785973
  ],
  "E": [
    -4.083416498552116,
    -3.6425984617663496
  ],
  "F": [
    4.0834493555949845,
    7.587322120378784
  ],
  "G": [
    4.083449355594983,
    3.642548282041107
  ],
  "H": [
    4.083449355594984,
    -7.5854671879560565
  ],
  "I": [
    4.083449355594982,
    0.001104939358231325
  ],
  "J": [
    4.083449355594984,
    -3.640421513423418
  ]
}
}