Repository: JuliaGeo/LibGEOS.jl
Pull request #134 (2022-09-09 19:56:50)

Add Polygon constructors and createPolygon functionality
This starts to address issue #129 (I have not started on the multi-polygon functionality as I have questions on my current implementation). I added a new method to createPolygon that allows the user to create a polygon without specifying any holes as a convenience. I also added two new Polygon constructors and updated the existing one that takes in a pointer. The two new constructors take in one linear ring, and one linear ring and a vector of linear rings respectively. The updates to the existing constructor make sure that only pointers to polygons and linear rings are used to construct a new Polygon. This needs to be added as before if you passed in a different type of pointer it was simply labeled as a polygon, but nothing internally changed (i.e. if you passed in a line it still is classified as a line and has no area. I also added in two calls to cloneGeom within this functions as it was causing seg faults within testing due to reusing the pointer. I think that this might be a solution to issue #133. 

However, I did not add a call to cloneGeom within the polygon constructor that takes in a vector of coordinates. This constructor was not causing a seg fault. I think this is because before using the pointer two new objects are created and then these are used to create the polygon and won't be used elsewhere in the code. However, it might still be beneficial to add a call to cloneGeom. I would love advice on this. 

If this does seem like a solution to #133 then it will need to be applied to all types within the geos_types.jl.

I also added testing for new Polygon functionality. Should I explicitly destroy the polygons I create within the test function after using them?

skygering: I am also open to working on fixing up the rest of the constructors and trying to find the source of other memory issues like in issue #91 if anyone has suggestions. 
skygering: Ready for merge! 

Patch:
diff --git a/examples/readme_examples.ipynb b/examples/readme_examples.ipynb
index 9a1f2d6..ca3835b 100644
--- a/examples/readme_examples.ipynb
+++ b/examples/readme_examples.ipynb
@@ -88,146 +88,7 @@
    "outputs": [
     {
      "data": {
-      "image/svg+xml": [
-       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
-       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9100\">\n",
-       "    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9100)\" points=\"\n",
-       "0,400 600,400 600,0 0,0 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9101\">\n",
-       "    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9100)\" points=\"\n",
-       "29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9102\">\n",
-       "    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,248.925 580.315,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,138.755 580.315,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 37.7289,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,248.925 37.7289,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,138.755 37.7289,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 37.7289,28.5852 \n",
-       "  \"/>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9100)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n",
-       "</g>\n",
-       "<polygon clip-path=\"url(#clip9102)\" points=\"\n",
-       "359.975,248.925 470.145,248.925 470.145,138.755 359.975,138.755 359.975,248.925 359.975,248.925 \n",
-       "  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,248.925 470.145,248.925 470.145,138.755 359.975,138.755 359.975,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip9102)\" points=\"\n",
-       "139.636,248.925 249.806,248.925 249.806,138.755 139.636,138.755 139.636,248.925 139.636,248.925 \n",
-       "  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,248.925 249.806,248.925 249.806,138.755 139.636,138.755 139.636,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip9102)\" points=\"\n",
-       "139.636,248.925 249.806,248.925 249.806,138.755 139.636,248.925 139.636,248.925 \n",
-       "  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,248.925 249.806,248.925 249.806,138.755 139.636,248.925 \n",
-       "  \"/>\n",
-       "</svg>\n"
-      ]
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n<defs>\n  <clipPath id=\"clip9100\">\n    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9100)\" points=\"\n0,400 600,400 600,0 0,0 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9101\">\n    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9100)\" points=\"\n29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9102\">\n    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n  </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  139.636,359.094 139.636,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  249.806,359.094 249.806,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  359.975,359.094 359.975,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  470.145,359.094 470.145,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  580.315,359.094 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,248.925 580.315,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,138.755 580.315,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,28.5852 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,359.094 139.636,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  249.806,359.094 249.806,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,359.094 359.975,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  470.145,359.094 470.145,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  580.315,359.094 580.315,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 37.7289,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,248.925 37.7289,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,138.755 37.7289,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9100)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,28.5852 37.7289,28.5852 \n  \"/>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n</g>\n<g clip-path=\"url(#clip9100)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n</g>\n<polygon clip-path=\"url(#clip9102)\" points=\"\n359.975,248.925 470.145,248.925 470.145,138.755 359.975,138.755 359.975,248.925 359.975,248.925 \n  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,248.925 470.145,248.925 470.145,138.755 359.975,138.755 359.975,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip9102)\" points=\"\n139.636,248.925 249.806,248.925 249.806,138.755 139.636,138.755 139.636,248.925 139.636,248.925 \n  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,248.925 249.806,248.925 249.806,138.755 139.636,138.755 139.636,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip9102)\" points=\"\n139.636,248.925 249.806,248.925 249.806,138.755 139.636,248.925 139.636,248.925 \n  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9102)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,248.925 249.806,248.925 249.806,138.755 139.636,248.925 \n  \"/>\n</svg>\n"
      },
      "execution_count": 4,
      "metadata": {},
@@ -245,164 +106,7 @@
    "outputs": [
     {
      "data": {
-      "image/svg+xml": [
-       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
-       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9300\">\n",
-       "    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9300)\" points=\"\n",
-       "0,400 600,400 600,0 0,0 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9301\">\n",
-       "    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9300)\" points=\"\n",
-       "29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9302\">\n",
-       "    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,248.925 580.315,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,138.755 580.315,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 37.7289,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,248.925 37.7289,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,138.755 37.7289,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 37.7289,28.5852 \n",
-       "  \"/>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9300)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n",
-       "</g>\n",
-       "<polygon clip-path=\"url(#clip9302)\" points=\"\n",
-       "304.891,248.925 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 349.229,84.7285 359.975,83.6701 \n",
-       "  470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 525.23,138.755 525.23,248.925 \n",
-       "  524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 359.975,304.01 349.229,302.951 \n",
-       "  338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 304.891,248.925 \n",
-       "  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  304.891,248.925 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 349.229,84.7285 359.975,83.6701 \n",
-       "  470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 525.23,138.755 525.23,248.925 \n",
-       "  524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 359.975,304.01 349.229,302.951 \n",
-       "  338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip9302)\" points=\"\n",
-       "84.551,248.925 84.551,138.755 85.6095,128.008 88.7441,117.675 93.8345,108.151 100.685,99.8041 109.032,92.9536 118.556,87.8632 128.889,84.7285 139.636,83.6701 \n",
-       "  249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 \n",
-       "  303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 \n",
-       "  118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 84.551,248.925 \n",
-       "  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  84.551,248.925 84.551,138.755 85.6095,128.008 88.7441,117.675 93.8345,108.151 100.685,99.8041 109.032,92.9536 118.556,87.8632 128.889,84.7285 139.636,83.6701 \n",
-       "  249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 \n",
-       "  303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 \n",
-       "  118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip9302)\" points=\"\n",
-       "100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n",
-       "  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 \n",
-       "  270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 \n",
-       "  85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 100.685,209.974 \n",
-       "  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n",
-       "  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 \n",
-       "  270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 \n",
-       "  85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n",
-       "  \"/>\n",
-       "</svg>\n"
-      ]
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n<defs>\n  <clipPath id=\"clip9300\">\n    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9300)\" points=\"\n0,400 600,400 600,0 0,0 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9301\">\n    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9300)\" points=\"\n29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9302\">\n    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n  </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  139.636,359.094 139.636,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  249.806,359.094 249.806,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  359.975,359.094 359.975,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  470.145,359.094 470.145,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  580.315,359.094 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,248.925 580.315,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,138.755 580.315,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,28.5852 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,359.094 139.636,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  249.806,359.094 249.806,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,359.094 359.975,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  470.145,359.094 470.145,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  580.315,359.094 580.315,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 37.7289,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,248.925 37.7289,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,138.755 37.7289,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,28.5852 37.7289,28.5852 \n  \"/>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n</g>\n<g clip-path=\"url(#clip9300)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n</g>\n<polygon clip-path=\"url(#clip9302)\" points=\"\n304.891,248.925 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 349.229,84.7285 359.975,83.6701 \n  470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 525.23,138.755 525.23,248.925 \n  524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 359.975,304.01 349.229,302.951 \n  338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 304.891,248.925 \n  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  304.891,248.925 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 349.229,84.7285 359.975,83.6701 \n  470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 525.23,138.755 525.23,248.925 \n  524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 359.975,304.01 349.229,302.951 \n  338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip9302)\" points=\"\n84.551,248.925 84.551,138.755 85.6095,128.008 88.7441,117.675 93.8345,108.151 100.685,99.8041 109.032,92.9536 118.556,87.8632 128.889,84.7285 139.636,83.6701 \n  249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 \n  303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 \n  118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 84.551,248.925 \n  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  84.551,248.925 84.551,138.755 85.6095,128.008 88.7441,117.675 93.8345,108.151 100.685,99.8041 109.032,92.9536 118.556,87.8632 128.889,84.7285 139.636,83.6701 \n  249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 \n  303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 \n  118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip9302)\" points=\"\n100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 \n  270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 \n  85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 100.685,209.974 \n  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 304.891,248.925 303.832,259.671 300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 \n  270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 \n  85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n  \"/>\n</svg>\n"
      },
      "execution_count": 5,
      "metadata": {},
@@ -420,148 +124,7 @@
    "outputs": [
     {
      "data": {
-      "image/svg+xml": [
-       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
-       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9500\">\n",
-       "    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9500)\" points=\"\n",
-       "0,400 600,400 600,0 0,0 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9501\">\n",
-       "    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip9500)\" points=\"\n",
-       "29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip9502\">\n",
-       "    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,248.925 580.315,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,138.755 580.315,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 37.7289,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,248.925 37.7289,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,138.755 37.7289,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 37.7289,28.5852 \n",
-       "  \"/>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip9500)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n",
-       "</g>\n",
-       "<polygon clip-path=\"url(#clip9502)\" points=\"\n",
-       "100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n",
-       "  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 \n",
-       "  349.229,84.7285 359.975,83.6701 470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 \n",
-       "  525.23,138.755 525.23,248.925 524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 \n",
-       "  359.975,304.01 349.229,302.951 338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 303.832,259.671 \n",
-       "  300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 \n",
-       "  109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n",
-       "  100.685,209.974 \n",
-       "  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n",
-       "  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 \n",
-       "  349.229,84.7285 359.975,83.6701 470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 \n",
-       "  525.23,138.755 525.23,248.925 524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 \n",
-       "  359.975,304.01 349.229,302.951 338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 303.832,259.671 \n",
-       "  300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 \n",
-       "  109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n",
-       "  \n",
-       "  \"/>\n",
-       "</svg>\n"
-      ]
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n<defs>\n  <clipPath id=\"clip9500\">\n    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9500)\" points=\"\n0,400 600,400 600,0 0,0 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9501\">\n    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip9500)\" points=\"\n29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip9502\">\n    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n  </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  139.636,359.094 139.636,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  249.806,359.094 249.806,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  359.975,359.094 359.975,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  470.145,359.094 470.145,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  580.315,359.094 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,248.925 580.315,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,138.755 580.315,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,28.5852 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,359.094 139.636,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  249.806,359.094 249.806,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,359.094 359.975,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  470.145,359.094 470.145,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  580.315,359.094 580.315,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 37.7289,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,248.925 37.7289,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,138.755 37.7289,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip9500)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,28.5852 37.7289,28.5852 \n  \"/>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n</g>\n<g clip-path=\"url(#clip9500)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n</g>\n<polygon clip-path=\"url(#clip9502)\" points=\"\n100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 \n  349.229,84.7285 359.975,83.6701 470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 \n  525.23,138.755 525.23,248.925 524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 \n  359.975,304.01 349.229,302.951 338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 303.832,259.671 \n  300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 \n  109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n  100.685,209.974 \n  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip9502)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  100.685,209.974 210.855,99.8041 219.202,92.9536 228.726,87.8632 239.059,84.7285 249.806,83.6701 260.552,84.7285 270.886,87.8632 280.409,92.9536 288.757,99.8041 \n  295.607,108.151 300.697,117.675 303.832,128.008 304.891,138.755 305.949,128.008 309.084,117.675 314.174,108.151 321.025,99.8041 329.372,92.9536 338.895,87.8632 \n  349.229,84.7285 359.975,83.6701 470.145,83.6701 480.892,84.7285 491.225,87.8632 500.749,92.9536 509.096,99.8041 515.947,108.151 521.037,117.675 524.172,128.008 \n  525.23,138.755 525.23,248.925 524.172,259.671 521.037,270.005 515.947,279.528 509.096,287.876 500.749,294.726 491.225,299.817 480.892,302.951 470.145,304.01 \n  359.975,304.01 349.229,302.951 338.895,299.817 329.372,294.726 321.025,287.876 314.174,279.528 309.084,270.005 305.949,259.671 304.891,248.925 303.832,259.671 \n  300.697,270.005 295.607,279.528 288.757,287.876 280.409,294.726 270.886,299.817 260.552,302.951 249.806,304.01 139.636,304.01 128.889,302.951 118.556,299.817 \n  109.032,294.726 100.685,287.876 93.8345,279.528 88.7441,270.005 85.6095,259.671 84.551,248.925 85.6095,238.178 88.7441,227.845 93.8345,218.321 100.685,209.974 \n  \n  \"/>\n</svg>\n"
      },
      "execution_count": 6,
      "metadata": {},
@@ -768,146 +331,7 @@
     },
     {
      "data": {
-      "image/svg+xml": [
-       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
-       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip0000\">\n",
-       "    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip0000)\" points=\"\n",
-       "0,400 600,400 600,0 0,0 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip0001\">\n",
-       "    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polygon clip-path=\"url(#clip0000)\" points=\"\n",
-       "29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n",
-       "  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n",
-       "<defs>\n",
-       "  <clipPath id=\"clip0002\">\n",
-       "    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n",
-       "  </clipPath>\n",
-       "</defs>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,248.925 580.315,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,138.755 580.315,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 580.315,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 580.315,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,28.5852 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 29.4661,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,359.094 139.636,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  249.806,359.094 249.806,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,359.094 359.975,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  470.145,359.094 470.145,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  580.315,359.094 580.315,354.137 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,359.094 37.7289,359.094 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,248.925 37.7289,248.925 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,138.755 37.7289,138.755 \n",
-       "  \"/>\n",
-       "<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  29.4661,28.5852 37.7289,28.5852 \n",
-       "  \"/>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n",
-       "</g>\n",
-       "<g clip-path=\"url(#clip0000)\">\n",
-       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n",
-       "</g>\n",
-       "<polygon clip-path=\"url(#clip0002)\" points=\"\n",
-       "359.975,248.925 359.975,138.755 470.145,138.755 470.145,248.925 359.975,248.925 359.975,248.925 \n",
-       "  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  359.975,248.925 359.975,138.755 470.145,138.755 470.145,248.925 359.975,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip0002)\" points=\"\n",
-       "139.636,248.925 139.636,138.755 249.806,138.755 249.806,248.925 139.636,248.925 139.636,248.925 \n",
-       "  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,248.925 139.636,138.755 249.806,138.755 249.806,248.925 139.636,248.925 \n",
-       "  \"/>\n",
-       "<polygon clip-path=\"url(#clip0002)\" points=\"\n",
-       "139.636,248.925 249.806,138.755 249.806,248.925 139.636,248.925 139.636,248.925 \n",
-       "  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n",
-       "<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n",
-       "  139.636,248.925 249.806,138.755 249.806,248.925 139.636,248.925 \n",
-       "  \"/>\n",
-       "</svg>\n"
-      ]
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n<defs>\n  <clipPath id=\"clip0000\">\n    <rect x=\"0\" y=\"0\" width=\"600\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip0000)\" points=\"\n0,400 600,400 600,0 0,0 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip0001\">\n    <rect x=\"120\" y=\"0\" width=\"421\" height=\"400\"/>\n  </clipPath>\n</defs>\n<polygon clip-path=\"url(#clip0000)\" points=\"\n29.4661,359.094 580.315,359.094 580.315,28.5852 29.4661,28.5852 \n  \" fill=\"#ffffff\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip0002\">\n    <rect x=\"29\" y=\"28\" width=\"552\" height=\"332\"/>\n  </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  139.636,359.094 139.636,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  249.806,359.094 249.806,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  359.975,359.094 359.975,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  470.145,359.094 470.145,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  580.315,359.094 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,248.925 580.315,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,138.755 580.315,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:0.5; stroke-opacity:0.1; fill:none\" points=\"\n  29.4661,28.5852 580.315,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 580.315,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,28.5852 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 29.4661,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,359.094 139.636,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  249.806,359.094 249.806,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,359.094 359.975,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  470.145,359.094 470.145,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  580.315,359.094 580.315,354.137 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,359.094 37.7289,359.094 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,248.925 37.7289,248.925 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,138.755 37.7289,138.755 \n  \"/>\n<polyline clip-path=\"url(#clip0000)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  29.4661,28.5852 37.7289,28.5852 \n  \"/>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 29.4661, 372.894)\" x=\"29.4661\" y=\"372.894\">-1</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 139.636, 372.894)\" x=\"139.636\" y=\"372.894\">0</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 249.806, 372.894)\" x=\"249.806\" y=\"372.894\">1</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 359.975, 372.894)\" x=\"359.975\" y=\"372.894\">2</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 470.145, 372.894)\" x=\"470.145\" y=\"372.894\">3</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:middle;\" transform=\"rotate(0, 580.315, 372.894)\" x=\"580.315\" y=\"372.894\">4</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 363.594)\" x=\"23.4661\" y=\"363.594\">-1</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 253.425)\" x=\"23.4661\" y=\"253.425\">0</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 143.255)\" x=\"23.4661\" y=\"143.255\">1</text>\n</g>\n<g clip-path=\"url(#clip0000)\">\n<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:12; text-anchor:end;\" transform=\"rotate(0, 23.4661, 33.0852)\" x=\"23.4661\" y=\"33.0852\">2</text>\n</g>\n<polygon clip-path=\"url(#clip0002)\" points=\"\n359.975,248.925 359.975,138.755 470.145,138.755 470.145,248.925 359.975,248.925 359.975,248.925 \n  \" fill=\"#009af9\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  359.975,248.925 359.975,138.755 470.145,138.755 470.145,248.925 359.975,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip0002)\" points=\"\n139.636,248.925 139.636,138.755 249.806,138.755 249.806,248.925 139.636,248.925 139.636,248.925 \n  \" fill=\"#e26f46\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,248.925 139.636,138.755 249.806,138.755 249.806,248.925 139.636,248.925 \n  \"/>\n<polygon clip-path=\"url(#clip0002)\" points=\"\n139.636,248.925 249.806,138.755 249.806,248.925 139.636,248.925 139.636,248.925 \n  \" fill=\"#3da44d\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip0002)\" style=\"stroke:#000000; stroke-width:1; stroke-opacity:1; fill:none\" points=\"\n  139.636,248.925 249.806,138.755 249.806,248.925 139.636,248.925 \n  \"/>\n</svg>\n"
      },
      "execution_count": 9,
      "metadata": {
@@ -927,15 +351,15 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Julia 0.6.2",
+   "display_name": "Julia 1.7.3",
    "language": "julia",
-   "name": "julia-0.6"
+   "name": "julia-1.7"
   },
   "language_info": {
    "file_extension": ".jl",
    "mimetype": "application/julia",
    "name": "julia",
-   "version": "0.6.2"
+   "version": "1.7.3"
   }
  },
  "nbformat": 4,
diff --git a/src/geos_functions.jl b/src/geos_functions.jl
index 1bf7626..e5d1399 100644
--- a/src/geos_functions.jl
+++ b/src/geos_functions.jl
@@ -443,6 +443,9 @@ function createPolygon(
     end
     result
 end
+# convenience function to create polygon without holes
+createPolygon(shell::GEOSGeom, context::GEOSContext = _context) =
+    createPolygon(shell, GEOSGeom[], context)
 
 function createCollection(
     geomtype::GEOSGeomTypes,
diff --git a/src/geos_types.jl b/src/geos_types.jl
index 343134d..32a0a79 100644
--- a/src/geos_types.jl
+++ b/src/geos_types.jl
@@ -74,12 +74,21 @@ end
 
 mutable struct Polygon <: AbstractGeometry
     ptr::GEOSGeom
-
+    # create polygon using GEOSGeom pointer - only makes sense if pointer points to a polygon or a linear ring to start with. 
     function Polygon(ptr::GEOSGeom)
-        polygon = new(ptr)
+        id = LibGEOS.geomTypeId(ptr)
+        if id == GEOS_POLYGON
+            polygon = new(cloneGeom(ptr))
+        elseif id == GEOS_LINEARRING
+            polygon = new(cloneGeom(createPolygon(ptr)))
+        else
+            error("LibGEOS: Can't convert a pointer to an element with a GeomType ID of $id to a polygon (yet). Please open an issue if you think this conversion makes sense. ")
+        end
         finalizer(destroyGeom, polygon)
         polygon
     end
+    # using vector of coordinates in following form:
+    # [[exterior], [hole1], [hole2], ...] where exterior and holeN are coordinates where the first and last point are the same
     function Polygon(coords::Vector{Vector{Vector{Float64}}})
         exterior = createLinearRing(coords[1])
         interiors = GEOSGeom[createLinearRing(lr) for lr in coords[2:end]]
@@ -87,7 +96,12 @@ mutable struct Polygon <: AbstractGeometry
         finalizer(destroyGeom, polygon)
         polygon
     end
-
+    # using 1 linear ring to form polygon with no holes - linear ring will be outer boundary of polygon
+    Polygon(ring::LinearRing) = Polygon(ring.ptr)
+    # using multiple linear rings to form polygon with holes - exterior linear ring will be polygon boundary and list of interior linear rings will form holes
+    Polygon(exterior::LinearRing, holes::Vector{LinearRing}) = 
+        Polygon(createPolygon(exterior.ptr, 
+                              GEOSGeom[ring.ptr for ring in holes]))
 end
 
 mutable struct MultiPolygon <: AbstractGeometry


Test patch:
diff --git a/test/runtests.jl b/test/runtests.jl
index de895bd..a50e918 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -14,6 +14,7 @@ if version != LibGEOS.GEOS_CAPI_VERSION
 end
 
 @testset "LibGEOS" begin
+    include("test_geos_types.jl")
     include("test_geos_functions.jl")
     include("test_geos_operations.jl")
     include("test_geo_interface.jl")
diff --git a/test/test_geos_functions.jl b/test/test_geos_functions.jl
index c1ba940..5d33bdb 100644
--- a/test/test_geos_functions.jl
+++ b/test/test_geos_functions.jl
@@ -90,6 +90,14 @@ end
     @test LibGEOS.getCoordinates(LibGEOS.getCoordSeq(interiors[2])) ==
           Vector{Float64}[[8, 1], [9, 1], [9, 2], [8, 2], [8, 1]]
 
+    exterior_poly = LibGEOS.createPolygon(exterior)
+    @test LibGEOS.getGeomDimensions(exterior_poly) == 2
+    @test LibGEOS.geomTypeId(exterior_poly) == LibGEOS.GEOS_POLYGON
+    @test LibGEOS.geomArea(exterior_poly) ≈ 100.0 atol = 1e-5
+    @test_throws ErrorException LibGEOS.interiorRing(exterior_poly, 1)
+    @test LibGEOS.equals(LibGEOS.exteriorRing(exterior_poly), exterior)
+
+
     # Interpolation and Projection
     ls = LibGEOS.createLineString(Vector{Float64}[[8, 1], [9, 1], [9, 2], [8, 2]])
     pt = LibGEOS.interpolate(ls, 2.5)
diff --git a/test/test_geos_types.jl b/test/test_geos_types.jl
new file mode 100644
index 0000000..0755747
--- /dev/null
+++ b/test/test_geos_types.jl
@@ -0,0 +1,83 @@
+@testset "GEOS types" begin
+    @testset "Polygon" begin
+        # Test polygon made from vectors
+        poly_vec = LibGEOS.Polygon([
+            [[-2.0, -2.0], [2.0, -2.0], [2.0, 2.0], [-2.0,2.0], [-2.0, -2.0]],
+            [[0.0, 0.0], [1.0, 1.0], [1.0,0.0], [0.0, 0.0]]])
+        @test LibGEOS.isValid(poly_vec)
+        @test LibGEOS.area(poly_vec) == 15.5
+        @test !LibGEOS.isEmpty(poly_vec)
+        @test LibGEOS.geomTypeId(poly_vec.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_vec.ptr) == 2
+        @test LibGEOS.GeoInterface.coordinates(poly_vec) == 
+            [[[-2.0, -2.0], [2.0, -2.0], [2.0, 2.0], [-2.0,2.0], [-2.0, -2.0]],
+             [[0.0, 0.0], [1.0, 1.0], [1.0,0.0], [0.0, 0.0]]]
+        @test length(LibGEOS.interiorRings(poly_vec)) == 1
+
+        # Test polygon made from  polygon pointer
+        poly_ptr = LibGEOS.Polygon(poly_vec.ptr)
+        @test LibGEOS.isValid(poly_ptr)
+        @test LibGEOS.equals(poly_vec, poly_ptr) # same area and coordinates
+        @test LibGEOS.geomTypeId(poly_vec.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_vec.ptr) == 2
+        @test length(LibGEOS.interiorRings(poly_vec)) == 1
+
+        # Test polygon made from linear ring pointer
+        ring_ext = LibGEOS.LinearRing([[-2.0, -2.0], [2.0, -2.0], [2.0, 2.0],
+                                       [-2.0, 2.0], [-2.0, -2.0]])
+        poly_ringptr = LibGEOS.Polygon(ring_ext.ptr)
+        # These change when made into polygon - compare below
+        @test LibGEOS.geomTypeId(ring_ext.ptr) == 2
+        @test LibGEOS.getGeomDimensions(ring_ext.ptr) == 1
+
+        @test LibGEOS.isValid(poly_ringptr)
+        @test LibGEOS.area(poly_ringptr) == 16
+        @test !LibGEOS.isEmpty(poly_ringptr)
+        @test LibGEOS.geomTypeId(poly_ringptr.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_ringptr.ptr) == 2
+
+        # Test polygon made from point pointer
+        point = LibGEOS.Point(1.0, 2.0)
+        @test_throws ErrorException LibGEOS.Polygon(point.ptr)
+
+        # Test polygon made from 1 linear ring
+        poly_ring = LibGEOS.Polygon(ring_ext)
+        @test LibGEOS.isValid(poly_ring)
+        @test LibGEOS.area(poly_ring) == 16
+        @test !LibGEOS.isEmpty(poly_ring)
+        @test LibGEOS.geomTypeId(poly_ring.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_ring.ptr) == 2
+        @test LibGEOS.GeoInterface.coordinates(poly_ring) == 
+            [[[-2.0, -2.0], [2.0, -2.0], [2.0, 2.0], [-2.0, 2.0], [-2.0, -2.0]]]
+        @test length(LibGEOS.interiorRings(poly_ring)) == 0
+
+        # Test polygon made from multiple linear rings (exterior and interior)
+        ring_int1 = LibGEOS.LinearRing([[0.0, 0.0], [1.0, 1.0], [1.0,0.0],
+                                        [0.0, 0.0]])
+        ring_int2 = LibGEOS.LinearRing([[0.0, 0.0], [0.0, -1.0], [-1.0, -1.0],
+                                        [-1.0, 0.0], [0.0, 0.0]])
+
+        #1 ring
+        poly_rings1 = LibGEOS.Polygon(ring_ext, [ring_int1])
+        @test LibGEOS.isValid(poly_rings1)
+        @test LibGEOS.geomTypeId(poly_rings1.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_rings1.ptr) == 2
+        @test length(LibGEOS.interiorRings(poly_rings1)) == 1
+        @test LibGEOS.equals(poly_rings1, poly_vec)
+
+        #2 rings
+        poly_rings2 = LibGEOS.Polygon(ring_ext, [ring_int1, ring_int2])
+
+        @test LibGEOS.isValid(poly_rings2)
+        @test LibGEOS.area(poly_rings2) == 14.5
+        @test !LibGEOS.isEmpty(poly_rings2)
+        @test LibGEOS.geomTypeId(poly_rings2.ptr) == 3
+        @test LibGEOS.getGeomDimensions(poly_rings2.ptr) == 2
+        @test LibGEOS.GeoInterface.coordinates(poly_rings2) == 
+            [[[-2.0, -2.0], [2.0, -2.0], [2.0, 2.0], [-2.0, 2.0], [-2.0, -2.0]],
+            [[0.0, 0.0], [1.0, 1.0], [1.0,0.0],[0.0, 0.0]],
+             [[0.0, 0.0], [0.0, -1.0], [-1.0, -1.0],[-1.0, 0.0], [0.0, 0.0]]]
+        @test length(LibGEOS.interiorRings(poly_rings2)) == 2
+    end
+
+end
\ No newline at end of file