{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from matplotlib import pyplot as plt\n",
"from matplotlib.collections import PatchCollection\n",
"from shapely.geometry import LineString, Polygon, Point, box, shape\n",
"# from shapely.algorithms.polylabel import polylabel\n",
"from descartes import PolygonPatch\n",
"\n",
"from ipywidgets import interact, interactive, fixed\n",
"import ipywidgets as widgets\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"initial_polygon = Polygon([\n",
" (0.0, 0.0),\n",
" (4.0, 0.0),\n",
" (4.0, 1.0),\n",
" (1.0, 1.0),\n",
" (1.0, 4.0),\n",
" (0.0, 4.0),\n",
" (0.0, 0.0)\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# generated by 'visualise' branch\n",
"quad_polygons = [\n",
" box(0, 0, 4, 4),\n",
" box(0, 0, 2, 2),\n",
" box(2, 0, 4, 2),\n",
" box(0, 2, 2, 4),\n",
" box(2, 2, 4, 4),\n",
" box(0, 2, 1, 3),\n",
" box(1, 2, 2, 3),\n",
" box(0, 3, 1, 4),\n",
" box(1, 3, 2, 4),\n",
" box(1, 2, 1.5, 2.5),\n",
" box(1.5, 2, 2, 2.5),\n",
" box(1, 2.5, 1.5, 3),\n",
" box(1.5, 2.5, 2, 3),\n",
" box(1, 2, 1.25, 2.25),\n",
" box(1.25, 2, 1.5, 2.25),\n",
" box(1, 2.25, 1.25, 2.5),\n",
" box(1.25, 2.25, 1.5, 2.5),\n",
" box(1, 2.5, 1.25, 2.75),\n",
" box(1.25, 2.5, 1.5, 2.75),\n",
" box(1, 2.75, 1.25, 3),\n",
" box(1.25, 2.75, 1.5, 3),\n",
" box(1, 3, 1.5, 3.5),\n",
" box(1.5, 3, 2, 3.5),\n",
" box(1, 3.5, 1.5, 4),\n",
" box(1.5, 3.5, 2, 4),\n",
" box(1, 3, 1.25, 3.25),\n",
" box(1.25, 3, 1.5, 3.25),\n",
" box(1, 3.25, 1.25, 3.5),\n",
" box(1.25, 3.25, 1.5, 3.5),\n",
" box(1, 3.5, 1.25, 3.75),\n",
" box(1.25, 3.5, 1.5, 3.75),\n",
" box(1, 3.75, 1.25, 4),\n",
" box(1.25, 3.75, 1.5, 4),\n",
" box(0, 2, 0.5, 2.5),\n",
" box(0.5, 2, 1, 2.5),\n",
" box(0, 2.5, 0.5, 3),\n",
" box(0.5, 2.5, 1, 3),\n",
" box(0, 2, 0.25, 2.25),\n",
" box(0.25, 2, 0.5, 2.25),\n",
" box(0, 2.25, 0.25, 2.5),\n",
" box(0.25, 2.25, 0.5, 2.5),\n",
" box(0, 2.5, 0.25, 2.75),\n",
" box(0.25, 2.5, 0.5, 2.75),\n",
" box(0, 2.75, 0.25, 3),\n",
" box(0.25, 2.75, 0.5, 3),\n",
" box(0.5, 2.5, 0.75, 2.75),\n",
" box(0.75, 2.5, 1, 2.75),\n",
" box(0.5, 2.75, 0.75, 3),\n",
" box(0.75, 2.75, 1, 3),\n",
" box(0.5, 2, 0.75, 2.25),\n",
" box(0.75, 2, 1, 2.25),\n",
" box(0.5, 2.25, 0.75, 2.5),\n",
" box(0.75, 2.25, 1, 2.5),\n",
" box(0, 3, 0.5, 3.5),\n",
" box(0.5, 3, 1, 3.5),\n",
" box(0, 3.5, 0.5, 4),\n",
" box(0.5, 3.5, 1, 4),\n",
" box(0, 3, 0.25, 3.25),\n",
" box(0.25, 3, 0.5, 3.25),\n",
" box(0, 3.25, 0.25, 3.5),\n",
" box(0.25, 3.25, 0.5, 3.5),\n",
" box(0.5, 3.5, 0.75, 3.75),\n",
" box(0.75, 3.5, 1, 3.75),\n",
" box(0.5, 3.75, 0.75, 4),\n",
" box(0.75, 3.75, 1, 4),\n",
" box(0.5, 3, 0.75, 3.25),\n",
" box(0.75, 3, 1, 3.25),\n",
" box(0.5, 3.25, 0.75, 3.5),\n",
" box(0.75, 3.25, 1, 3.5),\n",
" box(0, 3.5, 0.25, 3.75),\n",
" box(0.25, 3.5, 0.5, 3.75),\n",
" box(0, 3.75, 0.25, 4),\n",
" box(0.25, 3.75, 0.5, 4),\n",
" box(2, 0, 3, 1),\n",
" box(3, 0, 4, 1),\n",
" box(2, 1, 3, 2),\n",
" box(3, 1, 4, 2),\n",
" box(3, 0, 3.5, 0.5),\n",
" box(3.5, 0, 4, 0.5),\n",
" box(3, 0.5, 3.5, 1),\n",
" box(3.5, 0.5, 4, 1),\n",
" box(3, 0, 3.25, 0.25),\n",
" box(3.25, 0, 3.5, 0.25),\n",
" box(3, 0.25, 3.25, 0.5),\n",
" box(3.25, 0.25, 3.5, 0.5),\n",
" box(3.5, 0.5, 3.75, 0.75),\n",
" box(3.75, 0.5, 4, 0.75),\n",
" box(3.5, 0.75, 3.75, 1),\n",
" box(3.75, 0.75, 4, 1),\n",
" box(3.5, 0, 3.75, 0.25),\n",
" box(3.75, 0, 4, 0.25),\n",
" box(3.5, 0.25, 3.75, 0.5),\n",
" box(3.75, 0.25, 4, 0.5),\n",
" box(3, 0.5, 3.25, 0.75),\n",
" box(3.25, 0.5, 3.5, 0.75),\n",
" box(3, 0.75, 3.25, 1),\n",
" box(3.25, 0.75, 3.5, 1),\n",
" box(2, 0, 2.5, 0.5),\n",
" box(2.5, 0, 3, 0.5),\n",
" box(2, 0.5, 2.5, 1),\n",
" box(2.5, 0.5, 3, 1),\n",
" box(2, 0, 2.25, 0.25),\n",
" box(2.25, 0, 2.5, 0.25),\n",
" box(2, 0.25, 2.25, 0.5),\n",
" box(2.25, 0.25, 2.5, 0.5),\n",
" box(2.5, 0.5, 2.75, 0.75),\n",
" box(2.75, 0.5, 3, 0.75),\n",
" box(2.5, 0.75, 2.75, 1),\n",
" box(2.75, 0.75, 3, 1),\n",
" box(2.5, 0, 2.75, 0.25),\n",
" box(2.75, 0, 3, 0.25),\n",
" box(2.5, 0.25, 2.75, 0.5),\n",
" box(2.75, 0.25, 3, 0.5),\n",
" box(2, 0.5, 2.25, 0.75),\n",
" box(2.25, 0.5, 2.5, 0.75),\n",
" box(2, 0.75, 2.25, 1),\n",
" box(2.25, 0.75, 2.5, 1),\n",
" box(0, 0, 1, 1),\n",
" box(1, 0, 2, 1),\n",
" box(0, 1, 1, 2),\n",
" box(1, 1, 2, 2),\n",
" box(0, 1, 0.5, 1.5),\n",
" box(0.5, 1, 1, 1.5),\n",
" box(0, 1.5, 0.5, 2),\n",
" box(0.5, 1.5, 1, 2),\n",
" box(0, 1, 0.25, 1.25),\n",
" box(0.25, 1, 0.5, 1.25),\n",
" box(0, 1.25, 0.25, 1.5),\n",
" box(0.25, 1.25, 0.5, 1.5),\n",
" box(0.5, 1.5, 0.75, 1.75),\n",
" box(0.75, 1.5, 1, 1.75),\n",
" box(0.5, 1.75, 0.75, 2),\n",
" box(0.75, 1.75, 1, 2),\n",
" box(0.5, 1, 0.75, 1.25),\n",
" box(0.75, 1, 1, 1.25),\n",
" box(0.5, 1.25, 0.75, 1.5),\n",
" box(0.75, 1.25, 1, 1.5),\n",
" box(0, 1.5, 0.25, 1.75),\n",
" box(0.25, 1.5, 0.5, 1.75),\n",
" box(0, 1.75, 0.25, 2),\n",
" box(0.25, 1.75, 0.5, 2),\n",
" box(0, 0, 0.5, 0.5),\n",
" box(0.5, 0, 1, 0.5),\n",
" box(0, 0.5, 0.5, 1),\n",
" box(0.5, 0.5, 1, 1),\n",
" box(0, 0, 0.25, 0.25),\n",
" box(0.25, 0, 0.5, 0.25),\n",
" box(0, 0.25, 0.25, 0.5),\n",
" box(0.25, 0.25, 0.5, 0.5),\n",
" box(0, 0.5, 0.25, 0.75),\n",
" box(0.25, 0.5, 0.5, 0.75),\n",
" box(0, 0.75, 0.25, 1),\n",
" box(0.25, 0.75, 0.5, 1),\n",
" box(0.5, 0, 0.75, 0.25),\n",
" box(0.75, 0, 1, 0.25),\n",
" box(0.5, 0.25, 0.75, 0.5),\n",
" box(0.75, 0.25, 1, 0.5),\n",
" box(0.5, 0.5, 0.75, 0.75),\n",
" box(0.75, 0.5, 1, 0.75),\n",
" box(0.5, 0.75, 0.75, 1),\n",
" box(0.75, 0.75, 1, 1),\n",
" box(0.5, 0.5, 0.625, 0.625),\n",
" box(0.625, 0.5, 0.75, 0.625),\n",
" box(0.5, 0.625, 0.625, 0.75),\n",
" box(0.625, 0.625, 0.75, 0.75),\n",
" box(1, 0, 1.5, 0.5),\n",
" box(1.5, 0, 2, 0.5),\n",
" box(1, 0.5, 1.5, 1),\n",
" box(1.5, 0.5, 2, 1),\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ppatches = [PolygonPatch(poly, fc='None', ec='#ff0000', alpha=1.0, zorder=3, lw=0.25) for poly in quad_polygons]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAJMCAYAAAAIZPnDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAuIwAALiMBeKU/dgAACeNJREFUeJzt1rERwCAQwLCQ/Xd+JuBcQiFN4NJrZj4AAM7+2wEAAK8z\nTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTAB\nAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQ\nDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBM\nAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEA\nBMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAM\nEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwA\nAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAE\nwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwT\nAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAA\nwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATD\nBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMA\nQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADB\nMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMME\nABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBA\nMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEw\nAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQA\nEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAw\nTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTAB\nAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQ\nDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBM\nAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEA\nBMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAM\nEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwA\nAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAE\nwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwT\nAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAA\nwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATD\nBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMA\nQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADB\nMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMME\nABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBA\nMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEw\nAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQA\nEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAw\nTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTAB\nAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQ\nDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBM\nAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEA\nBMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAM\nEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwA\nAMEwAQAEwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAE\nwwQAEAwTAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwT\nAEAwTAAAwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQAEwwQAEAwTAEAwTAAA\nwTABAATDBAAQDBMAQDBMAADBMAEABMMEABAMEwBAMEwAAMEwAQCEDYG/B5Ub1seJAAAAAElFTkSu\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x105de6510>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(1, figsize=(5., 5.), dpi=300)\n",
"ax = fig.add_subplot(121)\n",
"ax.set_aspect('equal')\n",
"ax.get_xaxis().set_visible(False)\n",
"ax.get_yaxis().set_visible(False)\n",
"ax.axis('off')\n",
"ax.set_xlim(-0.15, 4.15)\n",
"ax.set_ylim(-0.15, 4.15)\n",
"col = ax.add_collection(PatchCollection(ppatches, match_original=True))\n",
"col.set_visible(not col.get_visible())\n",
"# save final plot\n",
"# plt.savefig(\"data/polylabel_full.png\", format=\"png\", bbox_inches='tight', pad_inches=0, alpha=True, transparent=True, dpi=300)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ax.collections[0].get_array()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%%bash\n",
"convert -background white -alpha remove -layers OptimizePlus -set delay 20 -colors 512 -loop 0 -scale 100% data/*.png output.gif"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 1
}