pkiage's picture
docs: add dependency graphs and update README
9375d41
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: G Pages: 1 -->
<svg width="518pt" height="1348pt"
viewBox="0.00 0.00 517.91 1348.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1344)">
<title>G</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="white" stroke="none" points="-4,4 -4,-1344 513.908,-1344 513.908,4 -4,4"/>
<!-- app -->
<g id="node1" class="node"><title>app</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#88693a" stroke="black" cx="103.965" cy="-1322" rx="27" ry="18"/>
<text text-anchor="middle" x="103.965" y="-1319.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">app</text>
</g>
<!-- IPython -->
<g id="node2" class="node"><title>IPython</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#e90c0c" stroke="black" points="345.965,-614 342.965,-618 321.965,-618 318.965,-614 291.965,-614 291.965,-578 345.965,-578 345.965,-614"/>
<text text-anchor="middle" x="318.965" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">IPython</text>
</g>
<!-- ipywidgets -->
<g id="node6" class="node"><title>ipywidgets</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#61b34c" stroke="black" points="332.965,-758 329.965,-762 308.965,-762 305.965,-758 270.965,-758 270.965,-722 332.965,-722 332.965,-758"/>
<text text-anchor="middle" x="301.965" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ipywidgets</text>
</g>
<!-- IPython&#45;&gt;ipywidgets -->
<g id="edge1" class="edge"><title>IPython&#45;&gt;ipywidgets</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M301.965,-669C297.063,-682.523 296.694,-698.505 297.714,-711.781"/>
<polygon fill="#e90c0c" stroke="black" points="294.236,-712.174 298.77,-721.749 301.197,-711.436 294.236,-712.174"/>
</g>
<!-- matplotlib -->
<g id="node8" class="node"><title>matplotlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#03953e" stroke="black" points="313.465,-433 310.465,-437 289.465,-437 286.465,-433 254.465,-433 254.465,-397 313.465,-397 313.465,-433"/>
<text text-anchor="middle" x="283.965" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">matplotlib</text>
</g>
<!-- pandas -->
<g id="node12" class="node"><title>pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#033e95" stroke="black" points="273.965,-867 270.965,-871 249.965,-871 246.965,-867 219.965,-867 219.965,-831 273.965,-831 273.965,-867"/>
<text text-anchor="middle" x="246.965" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pandas</text>
</g>
<!-- IPython&#45;&gt;pandas -->
<g id="edge3" class="edge"><title>IPython&#45;&gt;pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M315.866,-614.283C313.033,-628.642 308.316,-649.481 301.965,-667"/>
<path fill="none" stroke="black" d="M301.965,-669C286.756,-710.959 236.371,-694.831 229.965,-739"/>
</g>
<!-- certifi -->
<g id="node3" class="node"><title>certifi</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6ac53" stroke="black" points="307.965,-361 304.965,-365 283.965,-365 280.965,-361 253.965,-361 253.965,-325 307.965,-325 307.965,-361"/>
<text text-anchor="middle" x="280.965" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">certifi</text>
</g>
<!-- certifi&#45;&gt;matplotlib -->
<g id="edge4" class="edge"><title>certifi&#45;&gt;matplotlib</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M281.707,-361.303C282.037,-369.017 282.435,-378.288 282.803,-386.888"/>
<polygon fill="#b6ac53" stroke="black" points="279.307,-387.055 283.232,-396.896 286.301,-386.755 279.307,-387.055"/>
</g>
<!-- cycler -->
<g id="node4" class="node"><title>cycler</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a6c040" stroke="black" points="417.965,-289 414.965,-293 393.965,-293 390.965,-289 363.965,-289 363.965,-253 417.965,-253 417.965,-289"/>
<text text-anchor="middle" x="390.965" y="-268.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">cycler</text>
</g>
<!-- cycler&#45;&gt;matplotlib -->
<g id="edge5" class="edge"><title>cycler&#45;&gt;matplotlib</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M374.667,-289.227C362.621,-302.717 346.541,-322.417 335.965,-342"/>
</g>
<!-- features -->
<g id="node5" class="node"><title>features</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#85f910" stroke="black" points="233.965,-1122 230.965,-1126 209.965,-1126 206.965,-1122 179.965,-1122 179.965,-1086 233.965,-1086 233.965,-1122"/>
<text text-anchor="middle" x="206.965" y="-1101.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">features</text>
</g>
<!-- features&#45;&gt;app -->
<g id="edge6" class="edge"><title>features&#45;&gt;app</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M180.099,-1122.04C166.445,-1131.54 150.201,-1144.22 137.965,-1158 125.262,-1172.31 124.852,-1178.06 115.965,-1195 99.4256,-1226.53 76.289,-1233.03 82.9653,-1268 84.726,-1277.22 88.066,-1286.89 91.5728,-1295.4"/>
<polygon fill="#85f910" stroke="black" points="88.4603,-1297.02 95.6815,-1304.77 94.871,-1294.21 88.4603,-1297.02"/>
</g>
<!-- models -->
<g id="node10" class="node"><title>models</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#10f9f9" stroke="black" points="178.965,-1231 175.965,-1235 154.965,-1235 151.965,-1231 124.965,-1231 124.965,-1195 178.965,-1195 178.965,-1231"/>
<text text-anchor="middle" x="151.965" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">models</text>
</g>
<!-- features&#45;&gt;models -->
<g id="edge7" class="edge"><title>features&#45;&gt;models</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M198.129,-1122.19C189.308,-1139.35 175.638,-1165.95 165.46,-1185.75"/>
<polygon fill="#85f910" stroke="black" points="162.239,-1184.36 160.78,-1194.85 168.465,-1187.56 162.239,-1184.36"/>
</g>
<!-- plotly -->
<g id="node13" class="node"><title>plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#04139f" stroke="black" points="448.965,-1013 445.965,-1017 424.965,-1017 421.965,-1013 394.965,-1013 394.965,-977 448.965,-977 448.965,-1013"/>
<text text-anchor="middle" x="421.965" y="-992.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">plotly</text>
</g>
<!-- ipywidgets&#45;&gt;plotly -->
<g id="edge8" class="edge"><title>ipywidgets&#45;&gt;plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M306.96,-758.233C314.961,-783.819 332.495,-832.535 358.965,-867 374.356,-887.039 400.087,-877.898 402.965,-903"/>
<path fill="none" stroke="black" d="M402.965,-904C402.525,-919.994 393.449,-927.138 402.965,-940"/>
</g>
<!-- joblib -->
<g id="node7" class="node"><title>joblib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#06f91e" stroke="black" points="121.965,-505 118.965,-509 97.9653,-509 94.9653,-505 67.9653,-505 67.9653,-469 121.965,-469 121.965,-505"/>
<text text-anchor="middle" x="94.9653" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">joblib</text>
</g>
<!-- sklearn -->
<g id="node18" class="node"><title>sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b304a2" stroke="black" points="188.965,-1013 185.965,-1017 164.965,-1017 161.965,-1013 134.965,-1013 134.965,-977 188.965,-977 188.965,-1013"/>
<text text-anchor="middle" x="161.965" y="-992.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sklearn</text>
</g>
<!-- joblib&#45;&gt;sklearn -->
<g id="edge9" class="edge"><title>joblib&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M93.5736,-505.298C93.0802,-515.71 93.0503,-529.192 94.9653,-541"/>
</g>
<!-- matplotlib&#45;&gt;IPython -->
<g id="edge10" class="edge"><title>matplotlib&#45;&gt;IPython</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M289.312,-443.344C295.912,-477.101 307.07,-534.163 313.654,-567.837"/>
<polygon fill="#03953e" stroke="black" points="292.675,-442.306 287.321,-433.163 285.805,-443.649 292.675,-442.306"/>
<polygon fill="#03953e" stroke="black" points="310.265,-568.746 315.619,-577.889 317.135,-567.403 310.265,-568.746"/>
</g>
<!-- matplotlib&#45;&gt;pandas -->
<g id="edge11" class="edge"><title>matplotlib&#45;&gt;pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M263.965,-542C260.033,-565.225 260.033,-571.775 263.965,-595"/>
</g>
<!-- matplotlib&#45;&gt;sklearn -->
<g id="edge12" class="edge"><title>matplotlib&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M263.965,-542C261.099,-558.926 255.31,-561.686 249.965,-578 219.017,-672.46 191.965,-694.599 191.965,-794 191.965,-794 191.965,-794 191.965,-904 191.965,-926.374 183.518,-950.345 175.588,-967.918"/>
<polygon fill="#03953e" stroke="black" points="172.417,-966.437 171.293,-976.972 178.741,-969.437 172.417,-966.437"/>
<path fill="none" stroke="black" d="M280.434,-433.297C275.702,-457.335 267.49,-502.26 263.965,-541"/>
</g>
<!-- visualization -->
<g id="node20" class="node"><title>visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f31658" stroke="black" points="241.465,-1340 238.465,-1344 217.465,-1344 214.465,-1340 172.465,-1340 172.465,-1304 241.465,-1304 241.465,-1340"/>
<text text-anchor="middle" x="206.965" y="-1319.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">visualization</text>
</g>
<!-- matplotlib&#45;&gt;visualization -->
<g id="edge13" class="edge"><title>matplotlib&#45;&gt;visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M294.595,-433.127C311.651,-461.796 344.298,-521.889 354.965,-578 357.954,-593.718 355.38,-598.005 354.965,-614 351.631,-742.574 339.965,-774.383 339.965,-903 339.965,-903 339.965,-903 339.965,-996 339.965,-1021.23 385.429,-1078.9 377.965,-1103"/>
<path fill="none" stroke="black" d="M377.965,-1105C362.393,-1142.34 323.059,-1122.34 303.965,-1158"/>
</g>
<!-- mkl -->
<g id="node9" class="node"><title>mkl</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#2fbc92" stroke="black" points="214.965,-145 211.965,-149 190.965,-149 187.965,-145 160.965,-145 160.965,-109 214.965,-109 214.965,-145"/>
<text text-anchor="middle" x="187.965" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">mkl</text>
</g>
<!-- numpy -->
<g id="node11" class="node"><title>numpy</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#036995" stroke="black" points="214.965,-289 211.965,-293 190.965,-293 187.965,-289 160.965,-289 160.965,-253 214.965,-253 214.965,-289"/>
<text text-anchor="middle" x="187.965" y="-268.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">numpy</text>
</g>
<!-- mkl&#45;&gt;numpy -->
<g id="edge14" class="edge"><title>mkl&#45;&gt;numpy</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M187.965,-145.129C187.965,-169.33 187.965,-213.789 187.965,-242.607"/>
<polygon fill="#2fbc92" stroke="black" points="184.465,-242.811 187.965,-252.811 191.465,-242.811 184.465,-242.811"/>
</g>
<!-- models&#45;&gt;app -->
<g id="edge15" class="edge"><title>models&#45;&gt;app</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M144.253,-1231.19C136.5,-1248.48 124.452,-1275.33 115.55,-1295.18"/>
<polygon fill="#10f9f9" stroke="black" points="112.243,-1294 111.343,-1304.55 118.629,-1296.86 112.243,-1294"/>
</g>
<!-- models&#45;&gt;visualization -->
<g id="edge16" class="edge"><title>models&#45;&gt;visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M165.485,-1240.3C173.998,-1256.86 184.947,-1278.16 193.458,-1294.72"/>
<polygon fill="#10f9f9" stroke="black" points="168.486,-1238.49 160.802,-1231.19 162.261,-1241.69 168.486,-1238.49"/>
<polygon fill="#10f9f9" stroke="black" points="190.466,-1296.56 198.151,-1303.85 196.692,-1293.36 190.466,-1296.56"/>
</g>
<!-- numpy&#45;&gt;joblib -->
<g id="edge17" class="edge"><title>numpy&#45;&gt;joblib</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M39.9653,-416C43.1927,-433.495 54.6377,-449.41 66.2578,-461.628"/>
<polygon fill="#036995" stroke="black" points="63.8737,-464.193 73.4436,-468.739 68.7975,-459.217 63.8737,-464.193"/>
</g>
<!-- numpy&#45;&gt;matplotlib -->
<g id="edge18" class="edge"><title>numpy&#45;&gt;matplotlib</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M187.965,-344C196.003,-370.547 222.085,-388.52 245.037,-399.6"/>
<polygon fill="#036995" stroke="black" points="243.737,-402.854 254.29,-403.792 246.626,-396.478 243.737,-402.854"/>
</g>
<!-- numpy&#45;&gt;models -->
<g id="edge19" class="edge"><title>numpy&#45;&gt;models</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M187.965,-344C206.254,-404.403 187.965,-422.889 187.965,-486 187.965,-486 187.965,-486 187.965,-542 187.965,-597.556 186.424,-611.466 187.965,-667"/>
<path fill="none" stroke="black" d="M187.965,-669C189.563,-726.552 153.965,-736.426 153.965,-794 153.965,-794 153.965,-794 153.965,-904 153.965,-941.882 180.911,-943.174 197.965,-977 221.56,-1023.8 224.976,-1036.77 242.965,-1086 254.496,-1117.55 291.059,-1135.67 265.965,-1158"/>
<path fill="none" stroke="black" d="M185.101,-289.138C183.354,-303.593 182.396,-324.642 187.965,-342"/>
<path fill="none" stroke="black" d="M265.965,-1159C244.018,-1179.34 212.879,-1193.1 188.69,-1201.49"/>
<polygon fill="#036995" stroke="black" points="187.523,-1198.19 179.13,-1204.65 189.723,-1204.83 187.523,-1198.19"/>
</g>
<!-- numpy&#45;&gt;pandas -->
<g id="edge20" class="edge"><title>numpy&#45;&gt;pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M187.965,-669C188.972,-705.268 235.173,-703.094 229.965,-739"/>
<path fill="none" stroke="black" d="M229.965,-741C226.584,-764.312 217.551,-773.981 229.965,-794"/>
</g>
<!-- numpy&#45;&gt;plotly -->
<g id="edge21" class="edge"><title>numpy&#45;&gt;plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M215.127,-273.321C285.079,-278.326 465.965,-302.086 465.965,-414 465.965,-414 465.965,-414 465.965,-795 465.965,-828.095 464.867,-839.164 446.965,-867 433.298,-888.251 403.66,-877.743 402.965,-903"/>
</g>
<!-- scipy -->
<g id="node16" class="node"><title>scipy</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#6605c7" stroke="black" points="159.965,-686 156.965,-690 135.965,-690 132.965,-686 105.965,-686 105.965,-650 159.965,-650 159.965,-686"/>
<text text-anchor="middle" x="132.965" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">scipy</text>
</g>
<!-- numpy&#45;&gt;scipy -->
<g id="edge22" class="edge"><title>numpy&#45;&gt;scipy</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M176.377,-298.605C165.2,-326.722 149.965,-372.633 149.965,-414 149.965,-414 149.965,-414 149.965,-542 149.965,-575.919 143.743,-614.548 138.828,-639.773"/>
<polygon fill="#036995" stroke="black" points="179.722,-299.673 180.275,-289.093 173.245,-297.019 179.722,-299.673"/>
<polygon fill="#036995" stroke="black" points="135.37,-639.216 136.823,-649.71 142.231,-640.6 135.37,-639.216"/>
</g>
<!-- numpy&#45;&gt;sklearn -->
<g id="edge23" class="edge"><title>numpy&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M39.9653,-416C45.6092,-446.595 24.3993,-459.063 39.9653,-486"/>
<path fill="none" stroke="black" d="M160.715,-282.334C114.702,-301.716 27.7239,-347.642 39.9653,-414"/>
</g>
<!-- pandas&#45;&gt;features -->
<g id="edge24" class="edge"><title>pandas&#45;&gt;features</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M301.965,-941C277.258,-990.689 243.413,-1045.91 223.5,-1077.35"/>
<polygon fill="#033e95" stroke="black" points="220.452,-1075.62 218.033,-1085.94 226.357,-1079.38 220.452,-1075.62"/>
</g>
<!-- pandas&#45;&gt;models -->
<g id="edge25" class="edge"><title>pandas&#45;&gt;models</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M301.965,-1105C297.677,-1133.15 287.236,-1139.07 265.965,-1158"/>
<path fill="none" stroke="black" d="M301.965,-941C273.863,-1007.29 312.809,-1031.82 301.965,-1103"/>
</g>
<!-- pandas&#45;&gt;plotly -->
<g id="edge26" class="edge"><title>pandas&#45;&gt;plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M402.965,-941C408.565,-948.568 412.64,-957.944 415.546,-966.695"/>
<polygon fill="#033e95" stroke="black" points="412.261,-967.93 418.441,-976.536 418.976,-965.955 412.261,-967.93"/>
<path fill="none" stroke="black" d="M301.965,-904C338.211,-934.939 374.622,-901.69 402.965,-940"/>
</g>
<!-- pandas&#45;&gt;sklearn -->
<g id="edge27" class="edge"><title>pandas&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M301.965,-904C314.135,-914.388 309.089,-925.673 301.965,-940"/>
<path fill="none" stroke="black" d="M263.806,-867.26C274.445,-877.9 288.652,-891.636 301.965,-903"/>
<path fill="none" stroke="black" d="M301.965,-941C299.52,-945.918 239.248,-967.454 198.592,-981.515"/>
<polygon fill="#033e95" stroke="black" points="197.294,-978.261 188.979,-984.827 199.574,-984.879 197.294,-978.261"/>
</g>
<!-- pandas&#45;&gt;visualization -->
<g id="edge28" class="edge"><title>pandas&#45;&gt;visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M301.965,-1105C298.415,-1128.3 310.748,-1135.42 303.965,-1158"/>
<path fill="none" stroke="black" d="M303.965,-1159C288.014,-1212.09 250.812,-1265.73 227.394,-1296.02"/>
<polygon fill="#033e95" stroke="black" points="224.608,-1293.91 221.183,-1303.93 230.113,-1298.23 224.608,-1293.91"/>
</g>
<!-- plotly&#45;&gt;models -->
<g id="edge29" class="edge"><title>plotly&#45;&gt;models</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M377.965,-1050C357.449,-1086.91 347.095,-1093.46 315.965,-1122 295.78,-1140.5 286.615,-1140.02 265.965,-1158"/>
<path fill="none" stroke="black" d="M405.317,-1013.05C396.327,-1022.94 385.55,-1035.98 377.965,-1049"/>
</g>
<!-- plotlyutils -->
<g id="node14" class="node"><title>plotlyutils</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#bd3c04" stroke="black" points="501.965,-1122 498.965,-1126 477.965,-1126 474.965,-1122 443.965,-1122 443.965,-1086 501.965,-1086 501.965,-1122"/>
<text text-anchor="middle" x="472.965" y="-1101.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">plotlyutils</text>
</g>
<!-- plotly&#45;&gt;plotlyutils -->
<g id="edge30" class="edge"><title>plotly&#45;&gt;plotlyutils</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M434.502,-1022.3C442.396,-1038.86 452.548,-1060.16 460.44,-1076.72"/>
<polygon fill="#04139f" stroke="black" points="437.621,-1020.71 430.159,-1013.19 431.303,-1023.72 437.621,-1020.71"/>
<polygon fill="#04139f" stroke="black" points="457.329,-1078.33 464.792,-1085.85 463.648,-1075.32 457.329,-1078.33"/>
</g>
<!-- plotly&#45;&gt;visualization -->
<g id="edge31" class="edge"><title>plotly&#45;&gt;visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M377.965,-1050C366.108,-1070.35 384.933,-1080.5 377.965,-1103"/>
</g>
<!-- pytest -->
<g id="node15" class="node"><title>pytest</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3706f9" stroke="black" points="315.965,-36 312.965,-40 291.965,-40 288.965,-36 261.965,-36 261.965,-0 315.965,-0 315.965,-36"/>
<text text-anchor="middle" x="288.965" y="-15.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pytest</text>
</g>
<!-- pytest&#45;&gt;matplotlib -->
<g id="edge33" class="edge"><title>pytest&#45;&gt;matplotlib</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M335.965,-272C325.997,-301.471 350.749,-314.626 335.965,-342"/>
<path fill="none" stroke="black" d="M335.965,-344C327.409,-359.844 315.578,-376.077 305.362,-388.916"/>
<polygon fill="#3706f9" stroke="black" points="302.525,-386.858 298.933,-396.826 307.956,-391.273 302.525,-386.858"/>
</g>
<!-- pytest&#45;&gt;numpy -->
<g id="edge34" class="edge"><title>pytest&#45;&gt;numpy</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M288.965,-73C260.355,-125.002 342.504,-139.008 335.965,-198"/>
<path fill="none" stroke="black" d="M335.965,-200C327.696,-247.233 266.053,-262.613 224.973,-267.609"/>
<polygon fill="#3706f9" stroke="black" points="224.591,-264.13 215.017,-268.669 225.332,-271.091 224.591,-264.13"/>
</g>
<!-- pytest&#45;&gt;pandas -->
<g id="edge35" class="edge"><title>pytest&#45;&gt;pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M335.965,-200C330.6,-230.645 345.934,-240.529 335.965,-270"/>
<path fill="none" stroke="black" d="M263.965,-597C274.799,-660.984 239.28,-674.777 229.965,-739"/>
<path fill="none" stroke="black" d="M335.965,-272C320.969,-316.336 272.421,-287.095 244.965,-325 221.239,-357.757 225.965,-373.553 225.965,-414 225.965,-414 225.965,-414 225.965,-488 225.965,-538.465 258.991,-544.78 263.965,-595"/>
</g>
<!-- pytest&#45;&gt;sklearn -->
<g id="edge36" class="edge"><title>pytest&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M94.9653,-542C110.342,-636.812 80.9937,-664.267 101.965,-758 105.714,-774.753 113.099,-777.074 115.965,-794"/>
<path fill="none" stroke="black" d="M115.965,-795C120.555,-857.875 140.956,-929.396 152.993,-967.23"/>
<polygon fill="#3706f9" stroke="black" points="149.737,-968.537 156.146,-976.973 156.397,-966.381 149.737,-968.537"/>
<path fill="none" stroke="black" d="M288.965,-73C259.538,-128.655 200.539,-68.9495 151.965,-109 17.1031,-220.198 -47.4899,-334.658 39.9653,-486"/>
<path fill="none" stroke="black" d="M292.706,-36.1159C294.198,-46.9559 294.455,-60.9597 288.965,-72"/>
<path fill="none" stroke="black" d="M39.9653,-488C56.1712,-517.829 85.6035,-508.369 94.9653,-541"/>
</g>
<!-- scipy&#45;&gt;pandas -->
<g id="edge38" class="edge"><title>scipy&#45;&gt;pandas</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M229.965,-795C234.87,-802.909 238.491,-812.369 241.099,-821.093"/>
<polygon fill="#6605c7" stroke="black" points="237.746,-822.104 243.712,-830.86 244.508,-820.295 237.746,-822.104"/>
<path fill="none" stroke="black" d="M115.965,-741C131.834,-794.574 200.518,-746.515 229.965,-794"/>
</g>
<!-- scipy&#45;&gt;sklearn -->
<g id="edge39" class="edge"><title>scipy&#45;&gt;sklearn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M123.765,-686.1C117.3,-700.351 110.673,-721.133 115.965,-739"/>
<path fill="none" stroke="black" d="M115.965,-741C122.655,-763.586 112.033,-770.775 115.965,-794"/>
</g>
<!-- six -->
<g id="node17" class="node"><title>six</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#cb10f9" stroke="black" points="473.965,-217 470.965,-221 449.965,-221 446.965,-217 419.965,-217 419.965,-181 473.965,-181 473.965,-217"/>
<text text-anchor="middle" x="446.965" y="-196.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">six</text>
</g>
<!-- six&#45;&gt;cycler -->
<g id="edge40" class="edge"><title>six&#45;&gt;cycler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M433.123,-217.303C426.477,-225.611 418.387,-235.723 411.078,-244.859"/>
<polygon fill="#cb10f9" stroke="black" points="408.163,-242.901 404.649,-252.896 413.629,-247.273 408.163,-242.901"/>
</g>
<!-- six&#45;&gt;plotly -->
<g id="edge41" class="edge"><title>six&#45;&gt;plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M458.776,-217.042C475.471,-242.842 503.965,-293.918 503.965,-342 503.965,-342 503.965,-342 503.965,-850 503.965,-890 516.642,-902.062 503.965,-940"/>
<path fill="none" stroke="black" d="M503.965,-941C495.96,-960.495 476.389,-973.555 458.376,-981.832"/>
<polygon fill="#cb10f9" stroke="black" points="457.009,-978.61 449.167,-985.733 459.74,-985.055 457.009,-978.61"/>
</g>
<!-- six&#45;&gt;plotlyutils -->
<g id="edge42" class="edge"><title>six&#45;&gt;plotlyutils</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M503.965,-941C485.495,-985.979 477.888,-1042.56 474.86,-1075.57"/>
<polygon fill="#cb10f9" stroke="black" points="471.349,-1075.55 473.999,-1085.81 478.325,-1076.13 471.349,-1075.55"/>
</g>
<!-- sklearn&#45;&gt;features -->
<g id="edge43" class="edge"><title>sklearn&#45;&gt;features</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M151.965,-1050C153.798,-1062.74 162.147,-1073.44 171.807,-1081.81"/>
<polygon fill="#b304a2" stroke="black" points="169.705,-1084.61 179.736,-1088.02 174.022,-1079.1 169.705,-1084.61"/>
</g>
<!-- sklearn&#45;&gt;models -->
<g id="edge44" class="edge"><title>sklearn&#45;&gt;models</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M151.965,-1159C150.04,-1167.09 149.474,-1176.08 149.548,-1184.31"/>
<polygon fill="#b304a2" stroke="black" points="146.061,-1184.72 149.953,-1194.58 153.055,-1184.45 146.061,-1184.72"/>
</g>
<!-- sklearn&#45;&gt;visualization -->
<g id="edge45" class="edge"><title>sklearn&#45;&gt;visualization</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M155.822,-1013.12C152.837,-1023.47 150.231,-1036.95 151.965,-1049"/>
<path fill="none" stroke="black" d="M151.965,-1050C158.802,-1097.51 163.079,-1111.3 151.965,-1158"/>
<path fill="none" stroke="black" d="M151.965,-1159C145.332,-1180.63 124.624,-1174.09 115.965,-1195 109.842,-1209.78 109.802,-1216.23 115.965,-1231 127.401,-1258.39 151.683,-1281.71 172.289,-1297.74"/>
<polygon fill="#b304a2" stroke="black" points="170.455,-1300.74 180.554,-1303.94 174.657,-1295.14 170.455,-1300.74"/>
</g>
<!-- statsmodels -->
<g id="node19" class="node"><title>statsmodels</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#cc338f" stroke="black" points="437.965,-867 434.965,-871 413.965,-871 410.965,-867 367.965,-867 367.965,-831 437.965,-831 437.965,-867"/>
<text text-anchor="middle" x="402.965" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">statsmodels</text>
</g>
<!-- statsmodels&#45;&gt;plotly -->
<g id="edge46" class="edge"><title>statsmodels&#45;&gt;plotly</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M401.975,-867.242C401.624,-877.634 401.602,-891.116 402.965,-903"/>
</g>
<!-- visualization&#45;&gt;features -->
<g id="edge47" class="edge"><title>visualization&#45;&gt;features</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M206.965,-1303.91C206.965,-1266.65 206.965,-1177.85 206.965,-1132.57"/>
<polygon fill="#f31658" stroke="black" points="210.465,-1132.31 206.965,-1122.31 203.465,-1132.31 210.465,-1132.31"/>
</g>
</g>
</svg>