Skip to content

Instantly share code, notes, and snippets.

@robintw
Last active April 17, 2018 19:42
Show Gist options
  • Save robintw/39e93610d98d8ae89988307886bacf87 to your computer and use it in GitHub Desktop.
Save robintw/39e93610d98d8ae89988307886bacf87 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Built-Up Area Leafiness analysis\nby Robin Wilson (robin@rtwilson.com)"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Import relevant libraries"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import pandas as pd\nimport matplotlib.pyplot as plt\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Read the CSV data which was exported from the GIS data using QGIS"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "df = pd.read_csv('BuiltUpAreas_WithLeaf_WithArea.csv')",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "df.columns",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": "Index(['bua11cd', 'bua11nm', 'bua_id', 'has_sd', 'sd_count', 'label', 'name',\n 'Leaf_mean', 'Leaf_media', 'Leaf_stdev', 'Leaf_min', 'Leaf_max', 'area',\n 'perimeter'],\n dtype='object')"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "How many rows are there to start with?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "len(df)",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "5360"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "How many rows if we exclude BUA's under 10km^2"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "len(df[df.area > 10000000])",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "161"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Ok, lets do the rest of our analysis with just these large areas"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large = df[df.area > 10000000]",
"execution_count": 6,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "What are the top areas if we sort by *mean* leafiness?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large.sort_values(\"Leaf_mean\", ascending=False).head()",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/plain": " bua11cd bua11nm bua_id has_sd sd_count label \\\n251 E34004906 Winchester BUA 4605 Y 2 E34004906 \n4763 E34004756 Northwich BUA 5080 Y 2 E34004756 \n4629 E34004560 Maidenhead BUA 2820 Y 5 E34004560 \n16 E34001481 Heswall BUA 724 N 0 E34001481 \n257 E34004941 Worcester BUA 1265 Y 2 E34004941 \n\n name Leaf_mean Leaf_media Leaf_stdev Leaf_min Leaf_max \\\n251 Winchester BUA 0.232308 0.225365 0.091031 0.006093 0.579025 \n4763 Northwich BUA 0.181535 0.176116 0.061717 -0.021819 0.478769 \n4629 Maidenhead BUA 0.181376 0.175004 0.075712 -0.056126 0.528889 \n16 Heswall BUA 0.167553 0.163465 0.047651 0.037823 0.393085 \n257 Worcester BUA 0.160467 0.155388 0.048406 -0.008730 0.441869 \n\n area perimeter \n251 1.232749e+07 52200.004 \n4763 1.441000e+07 104700.214 \n4629 1.853756e+07 93600.066 \n16 1.017750e+07 42999.946 \n257 2.466749e+07 96100.084 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>bua11cd</th>\n <th>bua11nm</th>\n <th>bua_id</th>\n <th>has_sd</th>\n <th>sd_count</th>\n <th>label</th>\n <th>name</th>\n <th>Leaf_mean</th>\n <th>Leaf_media</th>\n <th>Leaf_stdev</th>\n <th>Leaf_min</th>\n <th>Leaf_max</th>\n <th>area</th>\n <th>perimeter</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>251</th>\n <td>E34004906</td>\n <td>Winchester BUA</td>\n <td>4605</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004906</td>\n <td>Winchester BUA</td>\n <td>0.232308</td>\n <td>0.225365</td>\n <td>0.091031</td>\n <td>0.006093</td>\n <td>0.579025</td>\n <td>1.232749e+07</td>\n <td>52200.004</td>\n </tr>\n <tr>\n <th>4763</th>\n <td>E34004756</td>\n <td>Northwich BUA</td>\n <td>5080</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004756</td>\n <td>Northwich BUA</td>\n <td>0.181535</td>\n <td>0.176116</td>\n <td>0.061717</td>\n <td>-0.021819</td>\n <td>0.478769</td>\n <td>1.441000e+07</td>\n <td>104700.214</td>\n </tr>\n <tr>\n <th>4629</th>\n <td>E34004560</td>\n <td>Maidenhead BUA</td>\n <td>2820</td>\n <td>Y</td>\n <td>5</td>\n <td>E34004560</td>\n <td>Maidenhead BUA</td>\n <td>0.181376</td>\n <td>0.175004</td>\n <td>0.075712</td>\n <td>-0.056126</td>\n <td>0.528889</td>\n <td>1.853756e+07</td>\n <td>93600.066</td>\n </tr>\n <tr>\n <th>16</th>\n <td>E34001481</td>\n <td>Heswall BUA</td>\n <td>724</td>\n <td>N</td>\n <td>0</td>\n <td>E34001481</td>\n <td>Heswall BUA</td>\n <td>0.167553</td>\n <td>0.163465</td>\n <td>0.047651</td>\n <td>0.037823</td>\n <td>0.393085</td>\n <td>1.017750e+07</td>\n <td>42999.946</td>\n </tr>\n <tr>\n <th>257</th>\n <td>E34004941</td>\n <td>Worcester BUA</td>\n <td>1265</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004941</td>\n <td>Worcester BUA</td>\n <td>0.160467</td>\n <td>0.155388</td>\n <td>0.048406</td>\n <td>-0.008730</td>\n <td>0.441869</td>\n <td>2.466749e+07</td>\n <td>96100.084</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "What are the top areas if we sort by *median* leafiness?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large.sort_values(\"Leaf_media\", ascending=False).head()",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/plain": " bua11cd bua11nm bua_id has_sd sd_count label \\\n251 E34004906 Winchester BUA 4605 Y 2 E34004906 \n4763 E34004756 Northwich BUA 5080 Y 2 E34004756 \n4629 E34004560 Maidenhead BUA 2820 Y 5 E34004560 \n16 E34001481 Heswall BUA 724 N 0 E34001481 \n218 E34004294 Great Malvern BUA 1268 N 0 E34004294 \n\n name Leaf_mean Leaf_media Leaf_stdev Leaf_min \\\n251 Winchester BUA 0.232308 0.225365 0.091031 0.006093 \n4763 Northwich BUA 0.181535 0.176116 0.061717 -0.021819 \n4629 Maidenhead BUA 0.181376 0.175004 0.075712 -0.056126 \n16 Heswall BUA 0.167553 0.163465 0.047651 0.037823 \n218 Great Malvern BUA 0.159090 0.157340 0.046503 -0.017508 \n\n Leaf_max area perimeter \n251 0.579025 1.232749e+07 52200.004 \n4763 0.478769 1.441000e+07 104700.214 \n4629 0.528889 1.853756e+07 93600.066 \n16 0.393085 1.017750e+07 42999.946 \n218 0.425216 1.352000e+07 86700.022 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>bua11cd</th>\n <th>bua11nm</th>\n <th>bua_id</th>\n <th>has_sd</th>\n <th>sd_count</th>\n <th>label</th>\n <th>name</th>\n <th>Leaf_mean</th>\n <th>Leaf_media</th>\n <th>Leaf_stdev</th>\n <th>Leaf_min</th>\n <th>Leaf_max</th>\n <th>area</th>\n <th>perimeter</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>251</th>\n <td>E34004906</td>\n <td>Winchester BUA</td>\n <td>4605</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004906</td>\n <td>Winchester BUA</td>\n <td>0.232308</td>\n <td>0.225365</td>\n <td>0.091031</td>\n <td>0.006093</td>\n <td>0.579025</td>\n <td>1.232749e+07</td>\n <td>52200.004</td>\n </tr>\n <tr>\n <th>4763</th>\n <td>E34004756</td>\n <td>Northwich BUA</td>\n <td>5080</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004756</td>\n <td>Northwich BUA</td>\n <td>0.181535</td>\n <td>0.176116</td>\n <td>0.061717</td>\n <td>-0.021819</td>\n <td>0.478769</td>\n <td>1.441000e+07</td>\n <td>104700.214</td>\n </tr>\n <tr>\n <th>4629</th>\n <td>E34004560</td>\n <td>Maidenhead BUA</td>\n <td>2820</td>\n <td>Y</td>\n <td>5</td>\n <td>E34004560</td>\n <td>Maidenhead BUA</td>\n <td>0.181376</td>\n <td>0.175004</td>\n <td>0.075712</td>\n <td>-0.056126</td>\n <td>0.528889</td>\n <td>1.853756e+07</td>\n <td>93600.066</td>\n </tr>\n <tr>\n <th>16</th>\n <td>E34001481</td>\n <td>Heswall BUA</td>\n <td>724</td>\n <td>N</td>\n <td>0</td>\n <td>E34001481</td>\n <td>Heswall BUA</td>\n <td>0.167553</td>\n <td>0.163465</td>\n <td>0.047651</td>\n <td>0.037823</td>\n <td>0.393085</td>\n <td>1.017750e+07</td>\n <td>42999.946</td>\n </tr>\n <tr>\n <th>218</th>\n <td>E34004294</td>\n <td>Great Malvern BUA</td>\n <td>1268</td>\n <td>N</td>\n <td>0</td>\n <td>E34004294</td>\n <td>Great Malvern BUA</td>\n <td>0.159090</td>\n <td>0.157340</td>\n <td>0.046503</td>\n <td>-0.017508</td>\n <td>0.425216</td>\n <td>1.352000e+07</td>\n <td>86700.022</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "What are the lowest areas if we sort by mean leafiness"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large.sort_values(\"Leaf_mean\", ascending=True).head()",
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 9,
"data": {
"text/plain": " bua11cd bua11nm bua_id has_sd sd_count label \\\n4911 E34004978 Grays BUA 5708 Y 4 E34004978 \n4744 E34004846 Thanet BUA 4243 Y 3 E34004846 \n142 E34004707 Greater London BUA 5705 Y 104 E34004707 \n4708 E34004682 Stevenage BUA 3252 Y 2 E34004682 \n4833 E34004858 Exeter BUA 4 Y 3 E34004858 \n\n name Leaf_mean Leaf_media Leaf_stdev Leaf_min \\\n4911 Grays BUA 0.046586 0.045719 0.025500 -0.040814 \n4744 Thanet BUA 0.050020 0.043096 0.045293 -0.166400 \n142 Greater London BUA 0.061683 0.057584 0.036802 -0.095982 \n4708 Stevenage BUA 0.063386 0.062211 0.021998 -0.017950 \n4833 Exeter BUA 0.066929 0.062454 0.031770 -0.025321 \n\n Leaf_max area perimeter \n4911 0.195052 2.635254e+07 1.115000e+05 \n4744 0.347691 2.789248e+07 9.520007e+04 \n142 0.583697 1.737855e+09 3.256799e+06 \n4708 0.178562 2.189499e+07 5.230007e+04 \n4833 0.275862 2.849248e+07 1.078999e+05 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>bua11cd</th>\n <th>bua11nm</th>\n <th>bua_id</th>\n <th>has_sd</th>\n <th>sd_count</th>\n <th>label</th>\n <th>name</th>\n <th>Leaf_mean</th>\n <th>Leaf_media</th>\n <th>Leaf_stdev</th>\n <th>Leaf_min</th>\n <th>Leaf_max</th>\n <th>area</th>\n <th>perimeter</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>4911</th>\n <td>E34004978</td>\n <td>Grays BUA</td>\n <td>5708</td>\n <td>Y</td>\n <td>4</td>\n <td>E34004978</td>\n <td>Grays BUA</td>\n <td>0.046586</td>\n <td>0.045719</td>\n <td>0.025500</td>\n <td>-0.040814</td>\n <td>0.195052</td>\n <td>2.635254e+07</td>\n <td>1.115000e+05</td>\n </tr>\n <tr>\n <th>4744</th>\n <td>E34004846</td>\n <td>Thanet BUA</td>\n <td>4243</td>\n <td>Y</td>\n <td>3</td>\n <td>E34004846</td>\n <td>Thanet BUA</td>\n <td>0.050020</td>\n <td>0.043096</td>\n <td>0.045293</td>\n <td>-0.166400</td>\n <td>0.347691</td>\n <td>2.789248e+07</td>\n <td>9.520007e+04</td>\n </tr>\n <tr>\n <th>142</th>\n <td>E34004707</td>\n <td>Greater London BUA</td>\n <td>5705</td>\n <td>Y</td>\n <td>104</td>\n <td>E34004707</td>\n <td>Greater London BUA</td>\n <td>0.061683</td>\n <td>0.057584</td>\n <td>0.036802</td>\n <td>-0.095982</td>\n <td>0.583697</td>\n <td>1.737855e+09</td>\n <td>3.256799e+06</td>\n </tr>\n <tr>\n <th>4708</th>\n <td>E34004682</td>\n <td>Stevenage BUA</td>\n <td>3252</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004682</td>\n <td>Stevenage BUA</td>\n <td>0.063386</td>\n <td>0.062211</td>\n <td>0.021998</td>\n <td>-0.017950</td>\n <td>0.178562</td>\n <td>2.189499e+07</td>\n <td>5.230007e+04</td>\n </tr>\n <tr>\n <th>4833</th>\n <td>E34004858</td>\n <td>Exeter BUA</td>\n <td>4</td>\n <td>Y</td>\n <td>3</td>\n <td>E34004858</td>\n <td>Exeter BUA</td>\n <td>0.066929</td>\n <td>0.062454</td>\n <td>0.031770</td>\n <td>-0.025321</td>\n <td>0.275862</td>\n <td>2.849248e+07</td>\n <td>1.078999e+05</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "What are the areas that have the most variability in their leafiness? Each area has a very different\nmean leafiness value, so we can't just compare standard deviation values. Instead, we'll calculate the co-efficient of variation (standard deviation as a proportion of the mean) and look at the variability in that."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large['Leaf_cv'] = large.Leaf_stdev / large.Leaf_mean",
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"text": "/Users/robin/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \"\"\"Entry point for launching an IPython kernel.\n",
"name": "stderr"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large.sort_values(\"Leaf_cv\", ascending=False).head()",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 11,
"data": {
"text/plain": " bua11cd bua11nm bua_id has_sd sd_count label \\\n4744 E34004846 Thanet BUA 4243 Y 3 E34004846 \n308 E34004644 Felixstowe BUA 4247 Y 2 E34004644 \n306 E34004640 Reading BUA 5244 Y 8 E34004640 \n4866 E34004900 Blackpool BUA 707 Y 7 E34004900 \n81 E34005054 Greater Manchester BUA 5071 Y 72 E34005054 \n\n name Leaf_mean Leaf_media Leaf_stdev Leaf_min \\\n4744 Thanet BUA 0.050020 0.043096 0.045293 -0.166400 \n308 Felixstowe BUA 0.088974 0.079795 0.059855 -0.086180 \n306 Reading BUA 0.086041 0.076874 0.055083 -0.093819 \n4866 Blackpool BUA 0.076584 0.070172 0.047481 -0.052320 \n81 Greater Manchester BUA 0.097402 0.084551 0.059387 -0.151687 \n\n Leaf_max area perimeter Leaf_cv \n4744 0.347691 2.789248e+07 9.520007e+04 0.905490 \n308 0.437179 1.206250e+07 4.910002e+04 0.672721 \n306 0.477467 8.369745e+07 2.895002e+05 0.640186 \n4866 0.376961 6.126501e+07 1.720999e+05 0.619988 \n81 0.581677 6.302525e+08 1.630301e+06 0.609703 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>bua11cd</th>\n <th>bua11nm</th>\n <th>bua_id</th>\n <th>has_sd</th>\n <th>sd_count</th>\n <th>label</th>\n <th>name</th>\n <th>Leaf_mean</th>\n <th>Leaf_media</th>\n <th>Leaf_stdev</th>\n <th>Leaf_min</th>\n <th>Leaf_max</th>\n <th>area</th>\n <th>perimeter</th>\n <th>Leaf_cv</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>4744</th>\n <td>E34004846</td>\n <td>Thanet BUA</td>\n <td>4243</td>\n <td>Y</td>\n <td>3</td>\n <td>E34004846</td>\n <td>Thanet BUA</td>\n <td>0.050020</td>\n <td>0.043096</td>\n <td>0.045293</td>\n <td>-0.166400</td>\n <td>0.347691</td>\n <td>2.789248e+07</td>\n <td>9.520007e+04</td>\n <td>0.905490</td>\n </tr>\n <tr>\n <th>308</th>\n <td>E34004644</td>\n <td>Felixstowe BUA</td>\n <td>4247</td>\n <td>Y</td>\n <td>2</td>\n <td>E34004644</td>\n <td>Felixstowe BUA</td>\n <td>0.088974</td>\n <td>0.079795</td>\n <td>0.059855</td>\n <td>-0.086180</td>\n <td>0.437179</td>\n <td>1.206250e+07</td>\n <td>4.910002e+04</td>\n <td>0.672721</td>\n </tr>\n <tr>\n <th>306</th>\n <td>E34004640</td>\n <td>Reading BUA</td>\n <td>5244</td>\n <td>Y</td>\n <td>8</td>\n <td>E34004640</td>\n <td>Reading BUA</td>\n <td>0.086041</td>\n <td>0.076874</td>\n <td>0.055083</td>\n <td>-0.093819</td>\n <td>0.477467</td>\n <td>8.369745e+07</td>\n <td>2.895002e+05</td>\n <td>0.640186</td>\n </tr>\n <tr>\n <th>4866</th>\n <td>E34004900</td>\n <td>Blackpool BUA</td>\n <td>707</td>\n <td>Y</td>\n <td>7</td>\n <td>E34004900</td>\n <td>Blackpool BUA</td>\n <td>0.076584</td>\n <td>0.070172</td>\n <td>0.047481</td>\n <td>-0.052320</td>\n <td>0.376961</td>\n <td>6.126501e+07</td>\n <td>1.720999e+05</td>\n <td>0.619988</td>\n </tr>\n <tr>\n <th>81</th>\n <td>E34005054</td>\n <td>Greater Manchester BUA</td>\n <td>5071</td>\n <td>Y</td>\n <td>72</td>\n <td>E34005054</td>\n <td>Greater Manchester BUA</td>\n <td>0.097402</td>\n <td>0.084551</td>\n <td>0.059387</td>\n <td>-0.151687</td>\n <td>0.581677</td>\n <td>6.302525e+08</td>\n <td>1.630301e+06</td>\n <td>0.609703</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "and the least variability?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "large.sort_values('Leaf_cv', ascending=True).head()",
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 12,
"data": {
"text/plain": " bua11cd bua11nm bua_id has_sd sd_count label \\\n70 E34004403 Bath BUA 1266 N 0 E34004403 \n22 E34001962 Yeovil BUA 722 N 0 E34001962 \n4653 E34004587 Stafford BUA 4492 Y 3 E34004587 \n230 E34005036 York BUA 2279 Y 2 E34005036 \n175 E34004487 Durham BUA 5436 N 0 E34004487 \n\n name Leaf_mean Leaf_media Leaf_stdev Leaf_min Leaf_max \\\n70 Bath BUA 0.129506 0.126995 0.027902 0.031190 0.307061 \n22 Yeovil BUA 0.124182 0.122399 0.028439 0.023708 0.302564 \n4653 Stafford BUA 0.150732 0.148805 0.037492 0.026252 0.365269 \n230 York BUA 0.105797 0.104355 0.026749 0.004041 0.260249 \n175 Durham BUA 0.147859 0.144863 0.039650 0.011482 0.320897 \n\n area perimeter Leaf_cv \n70 2.423750e+07 92099.940000 0.215446 \n22 1.256501e+07 42000.094000 0.229008 \n4653 2.045752e+07 90700.098005 0.248732 \n230 3.402500e+07 118499.958002 0.252833 \n175 1.286749e+07 50299.956000 0.268158 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>bua11cd</th>\n <th>bua11nm</th>\n <th>bua_id</th>\n <th>has_sd</th>\n <th>sd_count</th>\n <th>label</th>\n <th>name</th>\n <th>Leaf_mean</th>\n <th>Leaf_media</th>\n <th>Leaf_stdev</th>\n <th>Leaf_min</th>\n <th>Leaf_max</th>\n <th>area</th>\n <th>perimeter</th>\n <th>Leaf_cv</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>70</th>\n <td>E34004403</td>\n <td>Bath BUA</td>\n <td>1266</td>\n <td>N</td>\n <td>0</td>\n <td>E34004403</td>\n <td>Bath BUA</td>\n <td>0.129506</td>\n <td>0.126995</td>\n <td>0.027902</td>\n <td>0.031190</td>\n <td>0.307061</td>\n <td>2.423750e+07</td>\n <td>92099.940000</td>\n <td>0.215446</td>\n </tr>\n <tr>\n <th>22</th>\n <td>E34001962</td>\n <td>Yeovil BUA</td>\n <td>722</td>\n <td>N</td>\n <td>0</td>\n <td>E34001962</td>\n <td>Yeovil BUA</td>\n <td>0.124182</td>\n <td>0.122399</td>\n <td>0.028439</td>\n <td>0.023708</td>\n <td>0.302564</td>\n <td>1.256501e+07</td>\n <td>42000.094000</td>\n <td>0.229008</td>\n </tr>\n <tr>\n <th>4653</th>\n <td>E34004587</td>\n <td>Stafford BUA</td>\n <td>4492</td>\n <td>Y</td>\n <td>3</td>\n <td>E34004587</td>\n <td>Stafford BUA</td>\n <td>0.150732</td>\n <td>0.148805</td>\n <td>0.037492</td>\n <td>0.026252</td>\n <td>0.365269</td>\n <td>2.045752e+07</td>\n <td>90700.098005</td>\n <td>0.248732</td>\n </tr>\n <tr>\n <th>230</th>\n <td>E34005036</td>\n <td>York BUA</td>\n <td>2279</td>\n <td>Y</td>\n <td>2</td>\n <td>E34005036</td>\n <td>York BUA</td>\n <td>0.105797</td>\n <td>0.104355</td>\n <td>0.026749</td>\n <td>0.004041</td>\n <td>0.260249</td>\n <td>3.402500e+07</td>\n <td>118499.958002</td>\n <td>0.252833</td>\n </tr>\n <tr>\n <th>175</th>\n <td>E34004487</td>\n <td>Durham BUA</td>\n <td>5436</td>\n <td>N</td>\n <td>0</td>\n <td>E34004487</td>\n <td>Durham BUA</td>\n <td>0.147859</td>\n <td>0.144863</td>\n <td>0.039650</td>\n <td>0.011482</td>\n <td>0.320897</td>\n <td>1.286749e+07</td>\n <td>50299.956000</td>\n <td>0.268158</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Now let's have a look at this on a graph..."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from bokeh.plotting import figure, ColumnDataSource\nfrom bokeh.models import HoverTool\n\n\ndef scatter_with_hover(df, x, y,\n fig=None, cols=None, name=None, marker='x',\n fig_width=500, fig_height=500, **kwargs):\n \"\"\"\n Plots an interactive scatter plot of `x` vs `y` using bokeh, with automatic\n tooltips showing columns from `df`.\n\n Parameters\n ----------\n df : pandas.DataFrame\n DataFrame containing the data to be plotted\n x : str\n Name of the column to use for the x-axis values\n y : str\n Name of the column to use for the y-axis values\n fig : bokeh.plotting.Figure, optional\n Figure on which to plot (if not given then a new figure will be created)\n cols : list of str\n Columns to show in the hover tooltip (default is to show all)\n name : str\n Bokeh series name to give to the scattered data\n marker : str\n Name of marker to use for scatter plot\n **kwargs\n Any further arguments to be passed to fig.scatter\n\n Returns\n -------\n bokeh.plotting.Figure\n Figure (the same as given, or the newly created figure)\n\n Example\n -------\n fig = scatter_with_hover(df, 'A', 'B')\n show(fig)\n\n fig = scatter_with_hover(df, 'A', 'B', cols=['C', 'D', 'E'], marker='x', color='red')\n show(fig)\n\n Author\n ------\n Robin Wilson <robin@rtwilson.com>\n with thanks to Max Albert for original code example\n \"\"\"\n\n # If we haven't been given a Figure obj then create it with default\n # size etc.\n if fig is None:\n fig = figure(width=fig_width, height=fig_height, tools=['box_zoom', 'reset'])\n\n # We're getting data from the given dataframe\n source = ColumnDataSource(data=df)\n\n # We need a name so that we can restrict hover tools to just this\n # particular 'series' on the plot. You can specify it (in case it\n # needs to be something specific for other reasons), otherwise\n # we just use 'main'\n if name is None:\n name = 'main'\n\n # Actually do the scatter plot - the easy bit\n # (other keyword arguments will be passed to this function)\n fig.scatter(x, y, source=source, name=name, marker=marker, **kwargs)\n\n # Now we create the hover tool, and make sure it is only active with\n # the series we plotted in the previous line\n hover = HoverTool(names=[name])\n\n if cols is None:\n # Display *all* columns in the tooltips\n hover.tooltips = [(c, '@' + c) for c in df.columns]\n else:\n # Display just the given columns in the tooltips\n hover.tooltips = [(c, '@' + c) for c in cols]\n\n #hover.tooltips.append(('index', '$index'))\n\n # Finally add/enable the tool\n fig.add_tools(hover)\n\n return fig",
"execution_count": 13,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig = scatter_with_hover(large, 'Leaf_mean', 'Leaf_cv', cols=['name'])\nfig.xaxis.axis_label = \"Leafiness Mean\"\nfig.yaxis.axis_label = \"Leafiness CV\"",
"execution_count": 14,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from bokeh.io import output_notebook\nfrom bokeh.plotting import show",
"execution_count": 15,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "output_notebook()",
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "\n <div class=\"bk-root\">\n <a href=\"https://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n <span id=\"f9433b1e-cda1-4221-8939-0caf555ae6c3\">Loading BokehJS ...</span>\n </div>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"application/javascript": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n var JS_MIME_TYPE = 'application/javascript';\n var HTML_MIME_TYPE = 'text/html';\n var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n var CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n var script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n var cell = handle.cell;\n\n var id = cell.output_area._bokeh_element_id;\n var server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id !== undefined) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd, {\n iopub: {\n output: function(msg) {\n var element_id = msg.content.text.trim();\n Bokeh.index[element_id].model.document.clear();\n delete Bokeh.index[element_id];\n }\n }\n });\n // Destroy server and session\n var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[0].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[0].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'f9433b1e-cda1-4221-8939-0caf555ae6c3' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
"application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'f9433b1e-cda1-4221-8939-0caf555ae6c3' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"f9433b1e-cda1-4221-8939-0caf555ae6c3\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "show(fig)",
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "\n<div class=\"bk-root\">\n <div class=\"bk-plotdiv\" id=\"a7f203d5-ab57-430c-b1ff-0cf1e32b2638\"></div>\n</div>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"application/javascript": "(function(root) {\n function embed_document(root) {\n \n var docs_json = {\"15dd540d-6e8e-4f79-9620-88b92627fa09\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"def59e34-b704-4f92-acff-19f4a732c08b\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"d046acbf-4ffa-40f1-973c-3d98789ac73b\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"8526f981-989d-4035-86a2-b78e6ced7522\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8526f981-989d-4035-86a2-b78e6ced7522\",\"type\":\"BasicTicker\"}},\"id\":\"16062376-f30d-4b43-8d8b-3db70bae8b6b\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"c8b99542-f39e-49e5-a4ed-84ca1d5becd8\",\"type\":\"LinearScale\"},{\"attributes\":{\"below\":[{\"id\":\"36104b15-5495-495e-a835-eb75837a7337\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"d1aae01d-d665-4c30-b08b-23ce2836d835\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":500,\"renderers\":[{\"id\":\"36104b15-5495-495e-a835-eb75837a7337\",\"type\":\"LinearAxis\"},{\"id\":\"16062376-f30d-4b43-8d8b-3db70bae8b6b\",\"type\":\"Grid\"},{\"id\":\"d1aae01d-d665-4c30-b08b-23ce2836d835\",\"type\":\"LinearAxis\"},{\"id\":\"12caf88e-af1b-4ea5-9413-b9935f7942fa\",\"type\":\"Grid\"},{\"id\":\"934946b1-4ada-4106-8698-4d661194ef8a\",\"type\":\"BoxAnnotation\"},{\"id\":\"47a5d766-00d4-4b3e-a68c-dc4ba0268d1b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"def59e34-b704-4f92-acff-19f4a732c08b\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"3d392a82-2e3a-4f1e-a428-f338ab2e375a\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"31f102ae-1984-4975-9dc4-0eb361f1edf5\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"89952268-29c5-4f12-b06f-c96aaf13fcc2\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"d046acbf-4ffa-40f1-973c-3d98789ac73b\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"c8b99542-f39e-49e5-a4ed-84ca1d5becd8\",\"type\":\"LinearScale\"}},\"id\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"31f102ae-1984-4975-9dc4-0eb361f1edf5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"bua11cd\",\"bua11nm\",\"bua_id\",\"has_sd\",\"sd_count\",\"label\",\"name\",\"Leaf_mean\",\"Leaf_media\",\"Leaf_stdev\",\"Leaf_min\",\"Leaf_max\",\"area\",\"perimeter\",\"Leaf_cv\",\"index\"],\"data\":{\"Leaf_cv\":{\"__ndarray__\":\"PdTpV48z0j9qLUcIIVDNPzg92v8KINQ/LiEri1XJ1j+PXNKNJFnZP+r2Lv9hmNI/LmsXMmgO1z9UYE63v5PLP0MJ3zIQudk/qamYOFd32z+l0vfrroLjPychM+McAOA/Dc26bk/c1j/Jk+czxRvWP5rxhT8ze98/D03mhYZJ2D+TRi+2VLHTP7mTBRwuXeE/AilXVxzg0j9XNT4CnRfjP/cErC+Xgtk/Q2Xtlub23j/p2LWeyxzSP1IV0t3dZtY/OXwJVihx3j8ZJTi73prYP5BW+9R/KdE/e424FkPw1j/5D36fmM3SPz+vnud2dN0/6KWxm2Q+4z+De1pAsVXXP+/H0/LaXNk/4wlOb7jg3j+M0ICWgtncPwhlyotnw9I/R1FxflJo2T9gObZMjWLbP7awoUSMX9Y/Rh3JCHIE1D9eDCaj6srZPw9aOjkjtdI/613VeBjG1T8i2Uv1ojnZP93jwQW/ld0/Ii9s5OOE1j84hAzaCarTPwl+KUppLtA/PAJo87Mo1z9Jv7W2LdneP6ct8AtUNtk/Mg/s6XJj3D8zU4cSiZLaPxAS52UsFNk/43t14Hcm1D/aMbAP5XPeP990CitfTtM/h1hhEpZB2T/VtVlz4mHWP4YlCwfsKdg/K1lrKtja1z/rxX+tCtzaP9LDWCKchds/cmDGjYVD4D99nSAEA3LYPxk0aSuPBdo/soeJ32Z85D9346kG7oblP8DT1eoHg9Q/qBuvaXQ32T8R5+iEy1XaP3FmUiHLU9s/Of2TXUjF0T+u4ul/NGzbPy3F1UCShd8/sdrg/uc31T8EHqRULC3cPzHbec2xh98/UD6r/E2C0z9cXsruJ4DeP1r5mJr4Jtk/eM1/lEJg3D+LqXT6i9PWP0Yc3Fj8jNo/+U4qSR5N2D9di8+FIDHhP40hJOGlztQ/C8yBjckz1j+rL4kM1hLfPwNWyJiARNQ/icwpSrlS0z/bLY4RaSndP/HVFHUd19E/0NGP/OkI3T+VYSy9WhbZP69fi1NdBNI/X6lMW/Wp0j/CPTOac/bWP+5MZwPwUds/Ls4NarNU2D9Icb55WRrXP1rNGV88t9o/NCgd4ykl0z+bJ1P9tf7RP1I2sxJy1dE/FuEHTHfWzz/IfNO8KwreP5PYB296ldU/clkzbR2q0j+/JKtK6rPaP2W6SpEdNtY/7W4Iwayh2j+Q2QEER/ziP4+rU2GP5tw/wQ/V6Mb57D9Kjrc2NIrhP3cOVVKohtw/B13bPybC1T+0FyUHoZrYP/YPScRYE9g/TN8lKGSv3T9DwyShspfaP04oVW+zjOE/qtHVyxT03D//qHLAmxPTP3tflJbH9tg/+/erDwMe2T/Gd473RWHeP81tScGGPNU/tlGx3uip1j+j062q+ZLXP0Nf8MKEV90/+sHgw2YJ4j9vhjAanALWP9RJusb7w9g/0Wembk290T/xvEZ9Q0rWPze4YXnw1uM/GOIOPQO01D/fBhR7mALVP3uVgxG2lNg/4fIJWCyd2z8m7GYpNKHaP6kicas+etM/0YzQUQxt4j8iXn3nDoThP47GsQsImtM/tOS8HQC71D9MCu2Km2rdP8JlqbUuAtQ/XlN5iyid4D9jm33rIATWP+DEUIL4Fd8/tiIN9cJP0z8LxTYKh7DgP/omfEFex9g/QoSrgwoa1j/XJtL3EsDTP0/XVCeJ29w/oGONQTn20T8iVcRTV6nYPw==\",\"dtype\":\"float64\",\"shape\":[161]},\"Leaf_max\":{\"__ndarray__\":\"/f//H0wo2T/+///fNV3TPwQAAOD389A/9///f86c2j8HAADADR/SP/H////fkcs//f//v7AczD/9//9f46bTPwUAAMD6N9k/+f//n44r1z8AAACAGJ3iP/j//x+odtc/9///v4Ec3D8CAABAFTXQPwEAAGCbYNo/AQAA4JZm1T8PAADgQLjIPwUAACANMt4/AAAAYGtY2T/+//+fpK3iP/z//98Zotw//P//nz4Q2j/3//8fvbrOPwkAAIBOl8s/+////z0i2z/5//8fbLfVPwAAAKCUidQ/BwAAgMY52z/7//8fCVXVP/3////t0NQ/AAAAoBTT5T8FAAAgUiPQP/v//7+xudw/////P29m1j////8/A7/UP/n//984ltk//P//f25G4D/4//9fx5/WPwUAAADMudY/+///P9QXzz/3//9fA4XUP/3//z+/Nts/////v6Xj3D8JAACg6NfSP/j//3+SNdg/AwAAIOcw2z8BAADA8sTTPwgAAEDqp9A/BQAAoK/51z////9/8dzeP////x/fxdU/9///36Xo0j8HAABgtjbVP/7//39eh+I//////2w40z8EAABgX1HaP/3///+UR9w/BQAAYCNT1j8IAABAua3ZPwcAAOA6q9g/AQAAABNY1D/5//+fVEHVPwcAAODYaNY/BQAAIA3x3j8HAABAMLnTPwgAAKBfidY/+///n9KO3j8FAADgu/rbP/v//z/onsw//f//XwqA2j8HAACAuzjVP/v//1+zqNk/9P//n/Stxz/5//8/IwHfP/z///8L+Ns/CQAAQJHI0z8DAAAACPzVPwAAAADst90/CAAAIOR90T8IAACgOJLdP/v//19aWNc/AwAAwAUc0T/7//8fsM7XP/j////IIdg/+f//f+t80D8DAACgNYvgP/X//58aP8s/AAAAYBxM0z8DAABg80vWPwEAACAjDtA/CwAAIIAUzD8EAABAMcLVPwkAACApm9Q/CAAAwNuO3D////8/vkDRP////z9vW9A/9P//vzXQzj8FAADg9iXbPwgAAKC3etw/AwAAoM5p2T8DAADAe8PUP/z//1+o7OA/BwAAIFEo1z8IAACgrjjYP/r//18fE9E/+///35Bg1z/8//+fqpDVPwcAACCzedI/AwAAQNnT0z8DAACAUvLXPxAAAOAh28Y//P//n6BX3T/9//8f9OvbPwEAACB85tU/AQAAwJBA1j/7//9fqbLWP/v///9RKc4//f//vyak3j8HAACguHHSP/v//792ZtY//f///9kk0z8EAABAO5PaPwUAAOAon+A/+f//36S72z8AAACALLLUP////5/GddU/+f//Hwqo0j8BAABguafRPwUAAEDitNw/9///vxaRzT/7///fj3LUP/3//z/EZeE//v///8Ar5D/x//8/PIvLPwkAAMA9R9g/AQAAwEET0z8EAABgSxfeP/3///8eINg/BQAAAPNe0z8BAABgakDVPwEAACBehtE/AwAAoDo63T/9///fyc7ePwUAAIBkHtk/////36Gx4T/w////dPfIP/n//5+1WdM/DAAAoD9byj8DAABAvIrcPw8AAODKs80/CAAAIIws2z/3//+/2tXYPwkAAMACwNU/9////xeqzT/9//+/a+nSP/z////4zs8/+f///xdp1T/7//8/8VnaPwQAAIBHy9o/+f//n/G00j8CAABgwgzUPw==\",\"dtype\":\"float64\",\"shape\":[161]},\"Leaf_mean\":{\"__ndarray__\":\"I6COfV5yxT9W7S1lZMq/P5p0cSHThrk/7YsUXysWxD/X3VIxHv+4P1ksXalLhbU/Q8wEt9HvtD8+LZMMqpPAP0zr+/ct18E/mo6eTa0Juz/oJr+HXu+4PyniZTJ7krc/Q0hGME9owT/HOXHo92a2P+P9mVNB87Y/xOk1/hU3vj/28q1UzE6zP6SkGtnaI7s/1s0GrHibwT+8Jb8J6ZSvPx7OrBPfi8I/BnZ5ZVwnuT8rEq/bB3+1PyDaGxYCGrU/tNOYs7AXwT+ch6Q+Qhy7Pw5STY8O7cI/A9zFgQWrwD/pea9+TSHAP8EVdVh+5bU/F/gWhfs9wD8LS8DSlBG2P/BIGJa5icA/66emamaasj+4i2cPbaGzP8n7Cx9SPcM/BIdofOVBwj8sjLVPD+i6P4wLjbpFfLk/4ttVzQOrtD9pihMjtai3Pw3e3QMOXcQ/QX2MBQsPwz90jHCjfpi2P/ZvCGQkbLU/MS2qYfOjwT9YK1akQf+9PywRDWiFFbs/xCqXPBOevz9jaa4rSNi5PyBI/G74jro/iSeZcNl9sz8ZgSPa6zm3P6kv2gFCvM0/UHO167KLuj/ywfGAZ+W/PzhMalkxisQ/Kphhc+hftz85DORKN7e6Pxsf4eGEeLs/J42SeOXxtz803F1PjWWzP22OHhI+bbc/7oJTb3DFwD/aaX4bE7u0PzNf+sq/frk/luMJY9AGtj+0Vv58AMe2P9wRBgANx7M/ELA4RmxjwD+zZaIU4I61P4xlLrECuL4/FIiYCE2FtD/W0z06tzrBP9D6zGt8VLk/G0PHSNuCuT/MJXEHvu65PxjVr7NfSb0/K0fWFUYvuz+Lr4ftZKW4P5M1zsKPPLs/EBDBUReDsj8dr9FXxOHBPzSwOi+9Dbo/XI8kksvhsj/cDm/09qW8P/7ks4fj2LM/HLoeazWQtz/pOAhYMNy6P7htJ0frwrc/V38WxBYttT+OMCC3Lb65P1+MnDjcwcA/tWfO/uljuz/Du7qNXzG5PyG2E4nd/Lc/0NXrIFBBuT8JTQTQdFm4Pymm9s2MQsI/pqaTyuvmuz+38HlbLfmyPyvqmb5SN8c/0M9SCM+Dvz/LLkEUWBfEP+spGDgu0bs/w+ByOyxLwz9l0qLw/Am2P06JogmxBro/EJkDXmGwvT/YC3jsS6m8P71NOhsKOrA/N7hldDihuz9ubGyyblm1P7Pa2ZXtULo/pVF+6UCcqT9I9USgYsK4Py3RyVGfpLI/A2tJDoc8xz9IAqr8BKe5P/zFVArK3Lo/gsZ3tQUxtT/9fN11UUvAP5DfnH0sVME/bhFbfFhywD93XyPzXbS9PzqPQJDHMbw/+QFMNdCotD8MMUPtPiKxP28dTatj+sI/RcV90OoKtj83o5v7EN27Py/HB8hLAcI/LvjgL7prwj+HgupBLiKzP+b0uOuQkLY/tJy53KSauT9AeCjwUAnEP0KwHPAJm7M/DFvJ66GOvj/5373ueki3P4WrkG9DdrU/kSG/whk2vz/RZx+B+BPCP5wDSsQkYMI/2XeG2OgPwT/ItQ1CHtqnP+g6R3E29rk/DXrwHoR+tD9MeniRIH68P+HE12EeN7U/WH4dBxViuT/uZPv43sPAPyQqPscLQLU/wp2gt1KMtj9MC2QwAD2zPxGPuh4tZbQ/XfbH7gS0uT/VBLNW1tbBP6SIye1SxrM/bv0qwfK8uD8NTaDFIF22Pw==\",\"dtype\":\"float64\",\"shape\":[161]},\"Leaf_media\":{\"__ndarray__\":\"7////2vsxD8jAADAkVW/P+n//1/Glrg/AwAAgLQpwz/t///fUl24PxEAAEA+N7U/IQAAgEvKtD8RAABAW0HAPwoAAOBWI8E/EQAAQKAVuT8VAADgKKW1P/T//7/wTbY/BAAA4LzFwD/1///f4fm1P+j//5/mHrY/CQAAILwnvT8YAAAgFgazP+v//z/nDLg/DgAAAMc/wT/5//+fonutPw0AAIB9t8E/3P//f9PNtz/o////5Rq1P+L//5/WlbQ//v///wqQwD8FAACAldi5P/H//9/aisI/9v///yI3wD/r//9/mle/P/n//z+GCLU/4f///3wbvD/v//+/aGS1P97//z+Asr8/IAAA4PFlsT/k////jreyPwcAAGDwt8I/EQAAAApOwT8PAAAAKaC5PwEAAMDLXLg/EwAAgIQCtD8DAABAi7a2P/H//5+6I8Q/BwAAgDxewj/5//+/nnK1P+n//1/GOrQ/8///n1bUwD/w///fMzW9PxAAACD9tro/DwAA4FTtvj/4//+f+8e3PwAAAICijLk//v//X4nksj8JAAAAXsi2PwsAAMDF2Mw/9///Pxu+uT8kAAAAz6K9P/X////A48M/HAAAgNfPtj8EAAAApY65P/H////Wq7o/8f//n+sYtz8KAABAuGiyPwwAAGDuQbY/HgAAQBkkvj8hAABgsd2zPwcAAOCdArg/////Hweusz8TAAAgcW20P/v//18pgbM/GwAAwBYovz/7//+fl5C0PyIAAIDBU70/EQAAoOQwtD8CAABAAWLAP+L//5+le7c/4P//H+aZuD8XAACAs9+4Pw0AAOAjybs/5P//H8dnuj8cAABglie3P97//x828Lk/BwAAQH6wsT/7//8/wErBP/H//59Er7g/DAAAIP8Nsj/4////0u25PwwAAGCpWrM//////87jtj8DAAAgmIu4P/P//796OLc/7///XxvJtD8LAAAgCrW3P/X//9/EScA/BQAAgNqRuj8YAABAOl+4PwQAAEAncbc/FAAAQNr3uD8RAADAJTu3P/v//z8i6cE/DwAAwE3zuj/x////6k6yP/z///+LZsY/FwAAAJu/vj8CAADgn1fDP+v//19FZrs/BwAAoAcMwz8FAACgpda0PwEAAGA5ELk/CQAAoNShvD/s//8fm327P/z///8V2q8/4P////1Ruj8aAADAb6qzP+b//98uA7k/QwAAILAQpj8NAADgmUi3P+///3+hXLI/CQAAQPSKxj8MAABg7mm4PxwAAGCW47k/7///v18+sz/8////5He/P+////+csb8/AwAAoFcLvz/9//9/rde8PxsAAEAvvLo/BQAAQPa6sz8mAAAgBfqvP/v//79ON8I/7///n7EgtT8DAACgJmu6P/P////8yMA/8P//v60xwD8AAADAaVKyP/3//78SubU/6f//3yMSuT/5//+f56DCPxEAAADF9rE/AwAAQDKMvT/k//9fSbq2P+3//9+rz7Q/9P//H6DhvD8HAADA7xPBPwEAAECfAMI/5P///3Ekvj86AAAgeminP/v//3/gvLk/4v///yNTtD8UAAAgI666PxEAAIDUxLQ//f//v2BWuD8GAADAFzbAP+H//98KX7Q/CAAAYI46tj/r////FOSxP+r///88KLQ/5f//fzHGuD8HAAAgUUTBPwIAAECL1LI/DwAA4Oc/uD/k//9/MXS1Pw==\",\"dtype\":\"float64\",\"shape\":[161]},\"Leaf_min\":{\"__ndarray__\":\"v///P5Jdoz80AABAyEaYP+0AACAYl2G/LAAAICnmfD+c///fdTmUv6wBACCcfXA/FQAAAAjfmr80AAAgVvCfP44AAMClEZW/dgAAoAVLm7/5////eWrDv8r//38izK6/H/3/Xweuaj+d//9/k0qSvwwAAID+Ra6/vf//3zs2mr+E/v9fCR1tv8r///8mSZa/4v//P0Qxmr/w//8fQJK4v+D//79nyrG/9P//X9TAtb+KCABAV7pKPxwAAIC6wpG/CAAAYKtPtr+OAAAgkQqQvxQAAEALhIc/////H/NuhL/MAAAAwUOPv+D///+4Dqe/3v//H15Mvb8uAADAWrygv/////+xxKa/KAAAAM0Bor/O//9ft36gv7UAAEApJYA/u///H2dFpL+6//9famKkv3EAAEBPMJe/3wAAAIZygb+Z//+fnF+Uv37//3+u7ZG/4/7/P8Vcg79YAADgeniUv83//1/fSK6/kQAAQORYgr9E+P//ah1Xv9T//18DjXA/r///X76wkL8bAACgS721v2P//7+OJYO/0v//Pxv1rb/q////gVewv1YAAGBt9Xg/7gAAQFnpYz8VAAAgcVOnvwMAAGAu4YG/vP///6QCrL9O///fKbGBv9b//39qXKW/j///32ePmr/y//9fVeGiv97//z9jwam/AwAAwDYppr/W//+fBNmVvzoAAEAUaZC/AwAAQIsEuL8eAADg3w+2v28AAIBbX5K/rv//fzuKm7/r//9/yxWjv9L//3+AUq6/JP//v80Njr/z//8fDQuhv/j//5/eXqm/zwAAoAafcz83AADgKiGrvwAAAGB1F7i/egEAQFv2Yj/1//9fIla6vy4AAKDxd6W/LAAAgACKpb/WBgAAkhFdP9z//z+qO6K/xwAA4LQvir8JAABAQmOqvwMAAMBes4e/BwAAAGmpkL8mAADg5F2ivxQBAGBeV4a/IQEAQJbBjL8NAADA4vagvwQAAEBsrpq/5v//n6ziur9kAABg79OCv1///5/2LWw/Q/X/3+HjQL9hAACgc3l3vyIAAMDhq6W/LgAAwLxUrb/3///fEuC1vy8AAEB8vKy/Ef//fyRyjb/v//9/Do6bP5z9/58AT2s/RgAAoMbhmj/B//9/k5Wsv2QAACBtL4Q/jQAAwH+YkT8wAABg7mKjvzwAAMCXYZK/EQAAYMRMq783AABgubyvv9n//1+xs6a/DwAAoJZMxb/4//8/EJ2mv3f//1+/iJm/m///f8ZXlr/e//8f3empv2oAAGCJeY+/6v//n76Uob8MAACgPziivyIAAOChLbi/KAAAIIRRpb+a//+/cGaUP2T///9KKIe/cv///yXNlb+NAABAte2Zv/39//9er3I/mAMAQNo6Uj85AABAKP6Rv/n//5+OsLC/HwAAoJezvr+S//9/mZWTv8D//z9q75W/vwIAQNEGYL/O//9fQQWVv+n//5+hyaq/WP///wJYgT9tAADA/DuPv5T//x/8n5O/AAAA4O/Vob80AABgOhWqv8H//79uoJ6/FAAAoOK5t79FAADAnOWkv/IAAADBToA/iQAAAKL9nL/p//8fYSO0v/wDAMDtaWO/+f//X4Jvs7+mAACgkmeJv+H//98Kk7C/4AIAgMtEYb/r///fcQ2pv/j///+1PLC/9f///4+lhb8rAACAiqSZv+P//98wxrG/nvv/X3c/Zj+6////r1mnvw==\",\"dtype\":\"float64\",\"shape\":[161]},\"Leaf_stdev\":{\"__ndarray__\":\"uHx0/sZlqD+FaZ/HBR+dP4/OQo7TDaA/p9kTiD2brD/TUkyw8cyjP/8KqDzrApk/zEP2ppcrnj8/9zNAQpKcP38J5OaRrqw/lIUX6P80pz+D5yO86WeuP/YBd8Glkqc/NMS3jh3fqD8xwGy+dvSePwScVQ0DlKY/69ruLb3upj9LcoGSkMOXP7ueVyUndK0/h34gi4fFpD9VixZauNeiP3FsiULska0/8yn5dvpWqD8b2NO1mFWYPyZdfEdti50/ihbr26ZCsD8XJHFgZtikP+o8IyP2TKQ/ih/dyHLlpz9rzZa8u/SiP27n6carJ6Q/H8of/vCIsz+1wmrouxegP4uYIzUsN6o/naJoCWTzoT/d0yk1rrKhP0OeoD70j6Y/U1UMCAH+rD/tHSlpqganP/u0nJWI0aE/bAtzz4LbmT8hvCD10xGjPwPGSUc5z6c/EpIsxrXvqT/tQXmi1c+hP0lUbWVAzqM/iEYUgPLTqD+UVH1C9G6iPxN3XYIVZJs/qCRTONXhpj9DGxI+K+qoP/oAJRvJ7KQ/LR4NmrFKoT8yprxia0mjP0FIP3zSTbc/EwZ+KTm3oD9U5SnGlVquP6T0h3a2yKg/G0hNCdZyoj+soFtxrq+iP1YwirJgvqQ/cXp5mp7ZoT/3h+R040egPzq9+Lb8JaQ/RS34MzcMsT+cH855VayfP6da4rNpu6Q/Cq746cYzrD8eYcghRqWuP8Tl1MPHWpk/YsX6LibUqT++iOKv4r2hP6imyIuyO6o/iip77afKlj+b3aIPmoetPwt6WHKT86g/zb54xHHqoD8gdZrugdWmP0NRt/tE26w/yFYW6sOSoD8uUOLzwn2nPzk82NN7aKU/2ITGMWRqoD8SJ0q324KpP5chmUbznaU/tPebvLOtnD9JrofjTMiuPxNDBZ9yz5k/vGDK+EZZoD9MgYJbHhWqP1EpH3thGZ4/UcEGWQeTmT84N62eqXWnPyGgXdVFr6I/sHUYUS3aqD/CnjYILMCjPwTQoFwEA5s/93ycS791nT9PYdP3B3mhPx9ZhW7QLa8/YWwScws3pT9YeZ43cGWbP7EpyWjjYbM/fcnflNzaoj81vfSxpJimP4ik0CVYAZ8/RKDIfiEyoz9NERxgXrCkP1sTeOr2jaE/KSZOFwtRoT96Q7CJsuqnPxMmGMSvhpY/qVvXK5b+pj/5MGjaO1WpPwOCc3hrxKc/YmaQ1p8wpz+VOFwpZiSrP33n8tJ+nqA/7j/LtGaZrz9O0IqbOLmjP879piPVNaQ/syV1l5Oooz+q2FUa4RSrP/O2ByHSAbM/JPN8///CrT+EEnF0S7WhP5l2kjTE/qU/lgXH5kI3oD8Rf5JDMESgP1y93ZxtMKk/N7L//xY5nz/fvh033oakP4eVVuZqgrA/o6feXgTEtD/xRf+MHlKaP8C8+S2fdqE/RmU/zz1jnD/fq3LkzumrP4DbXhx8T6g/mW7ZmQrFoz9kP2FM6JKeP3wc76dvfKA/yaT2avLuqj9LbxW2lxauPwiJ5LqQXqY/D+0HeS+msz9G9cHXnRyaP4TXm4BPzp8/HXbt9KuNmj9JylfOOTGqPy9vcc3Kh5o/OXLsx2dbqj+PU5YMphGnP3QUpHeipKQ/Z4w70Qk3mz//6nGRQRGkP49kKDXmlZ8/3r4vGq7AoT9m9wS5RQWmP47f/Jgy1aE/u6cSiHPFmz+VzAdxMTyhPw==\",\"dtype\":\"float64\",\"shape\":[161]},\"area\":{\"__ndarray__\":\"/1+YKXtpY0EAsM78QfdnQf8/Nov4gXVBAKA1K0TdZkEAIP4fYjZnQf4/MWMygWhB/1+XqQiFZUH/lwCgWx13Qf+/mwkxo2tBAMCZGennZUGAOiD/ccjCQQHQ/QXWz41BAXDOHD8zdUH/f800A/JtQf/PlsWA8XFB/1+X8RnwZEH//2WOaSBnQQBgZT4hCXxBAZAu/199dEFf+sz9Y+XZQQAg/TuceXlBALAA2HBnhUH/v/2PkNxrQQKwAgBjdmVB/6+WueqBY0EAwGZyxER4QQBAllH0imhB/7+XMVOTa0H/82ZUn7yGQQAQY2Y+qH9BAOhm+jbnk0EAcJghO+91QQBA0AypbWhB/7/O9CT1b0EAwP4flZxmQQFIM2N1PoNBAEhmls7AhEEBcJrd5SNzQf+///uzDodBAmBh5lKPc0H+H/8jSAF3QfxfySyQyWlB/xeYcbuHe0EBADXbVvlmQf4nAEB9LohBAID9DR+FgEEAoMI0JDxtQQCwmmFxOYBBAThrtr6Ub0EAQDcjQzdmQf8fzNwFBWlB/z9iTmaLdEEAQJkhcp18QQCwNcNHg2dBAAACrAHqdEEAIGWCykeAQQDglfFVhndB/13/MSgGpUEAKGd6xBxwQQBLs5mAN6FB//9ntG2Zi0EA8GRiChiEQQBAyFz5oWtBAAD//11UaUEB1mYhaMWYQQEQMp0CkY5B/qMzqHz0k0EAwPrH5AFnQQEYzNSNs4FBAAABhAnYdUEADv0BHROaQf9FZkvUCJVB/09njgEMaEEA6P+XeLGCQQAwmO3GF4VB/79nRjA9ckEBsGZ61m6HQQEyzWdxU5VBAGD9B5kCaUEAQbSidsunQQCYzJA8y5lBATD908MAckEAAJ8h5sVpQQHQNrsSr2pB/1cwlRGzi0H+qZesH7WSQQAI/i/jKnJB/78zs4jddUH/v591OBRnQQBgzQy7dmZB/4/HFAYja0EAQGie1XxmQQBQmEU2Q3BBANjMxKcIgUH+fwG4UstnQQHAZ3ZwimNBAIDBlL4JZUH+v2G2gLFjQQAQNdOwZnJBABhmrmDSgUEAIMzw6/qAQQFAyJjFrXFB//8yi3i0aEH/pzPX1Yt3QQGAm+kpTGpBAHg0/4KCc0H+v/5nAExtQQDAZKbVuHNB/v8D4MlOZ0EAQGU6A1twQQDQme104XRB/5HNaAITvUEAgDVTIYt1QQBwMM/RZXNBADADsK+ZekH/v82E4/ZtQQDgMTMlbWNBAIAwwyF8a0EAIDILzH9kQQEQzZy+63JB/98wL7gDfkEBSMwYDPZ3QQCQMl3P0IBB/oszBHGwk0H/L8s4UhpwQQBQ/x9BV3VBAdgyEothk0EA0GjeKyx7QQAwANhWeoxB/18AIBksaUEAQAKY7P5oQf8f04QacG9BAKhMeuGEpUEAsP8/cblzQQBA/4c9lW1B/yeZNXeEjUH/nwAoZBhlQf7/MpOjNo1BASCeKYtBZEEAUP87mfd4QQCANMHh3IRBACA504hyb0EA1MypAvejQQAgzrBWtYBBAIUA1F3kpkEA0GjKuSF5Qf+fx7yGX2ZBAaD/+0Quc0EAEJuxWKp3Qf8jMZuC9WlBf0gz1EV7jEEBoDCnyiN/QQAQy9OwOp9BAUhlmoUGcUH//5q5iS5yQf9zmkJOIJFB/o/LVDMjf0EB+DNPBHCGQf+33zAX2cFBAAg06cGlk0EACGfO4d6IQQ==\",\"dtype\":\"float64\",\"shape\":[161]},\"bua11cd\":[\"E34001481\",\"E34001962\",\"E34002141\",\"E34003525\",\"E34003679\",\"E34004181\",\"E34004306\",\"E34004403\",\"E34004408\",\"E34004725\",\"E34005054\",\"E34005056\",\"E34005057\",\"E34004674\",\"E34000181\",\"E34005005\",\"E34005007\",\"E34005009\",\"E34002820\",\"E34004707\",\"E34004192\",\"E34004251\",\"E34004389\",\"E34004393\",\"E34004398\",\"E34004399\",\"E34004487\",\"E34004617\",\"E34004622\",\"E34004625\",\"E34004630\",\"E34004633\",\"E34004648\",\"E34004664\",\"E34004668\",\"E34004693\",\"E34004696\",\"E34004762\",\"E34004765\",\"E34004788\",\"E34004909\",\"E34004294\",\"E34003710\",\"E34004982\",\"E34004983\",\"E34004985\",\"E34004991\",\"E34005036\",\"E34004154\",\"E34004218\",\"E34004262\",\"E34004315\",\"E34004905\",\"E34004906\",\"E34004939\",\"E34004940\",\"E34004941\",\"E34004946\",\"E34004963\",\"E34004965\",\"E34004611\",\"E34004798\",\"E34000597\",\"E34004383\",\"E34004612\",\"E34004638\",\"E34004640\",\"E34004644\",\"E34004645\",\"E34004646\",\"E34004647\",\"E34004654\",\"E34004659\",\"E34004704\",\"E34004715\",\"E34004720\",\"E34004730\",\"E34004748\",\"E34004796\",\"E34004801\",\"E34004802\",\"E34004821\",\"E34004836\",\"E34004890\",\"E34004880\",\"E34004885\",\"E34004908\",\"E34000633\",\"E34003078\",\"E34004134\",\"E34004246\",\"E34004327\",\"E34004334\",\"E34004743\",\"E34004554\",\"E34004599\",\"E34004547\",\"E34004548\",\"E34004551\",\"E34004572\",\"E34004557\",\"E34004560\",\"E34004561\",\"E34004596\",\"E34004585\",\"E34004587\",\"E34004602\",\"E34004660\",\"E34004671\",\"E34004675\",\"E34004682\",\"E34004684\",\"E34004686\",\"E34004843\",\"E34004846\",\"E34004847\",\"E34004859\",\"E34004756\",\"E34004758\",\"E34004776\",\"E34004813\",\"E34004862\",\"E34004917\",\"E34004839\",\"E34004840\",\"E34004841\",\"E34004855\",\"E34004858\",\"E34004869\",\"E34004870\",\"E34004948\",\"E34004954\",\"E34004998\",\"E34004999\",\"E34004892\",\"E34004893\",\"E34004895\",\"E34004900\",\"E34004922\",\"E34004924\",\"E34004959\",\"E34004967\",\"E34004969\",\"E34004970\",\"E34004977\",\"E34004978\",\"E34004987\",\"E34004988\",\"E34004993\",\"E34004997\",\"E34005012\",\"E34005030\",\"E34005031\",\"E34005041\",\"E34005045\",\"E34005046\",\"E34005048\",\"E34004828\",\"E34005001\",\"E34005039\",\"E34005040\"],\"bua11nm\":[\"Heswall BUA\",\"Yeovil BUA\",\"Darlington BUA\",\"Fleet BUA\",\"Clacton-on-Sea BUA\",\"Hinckley BUA\",\"Salisbury BUA\",\"Bath BUA\",\"Scarborough BUA\",\"Peterlee BUA\",\"Greater Manchester BUA\",\"Milton Keynes BUA\",\"Redditch BUA\",\"Redhill (Reigate and Banstead) BUA\",\"Widnes BUA\",\"Trowbridge BUA\",\"Letchworth Garden City BUA\",\"Basingstoke BUA\",\"Shrewsbury BUA\",\"Greater London BUA\",\"Scunthorpe BUA\",\"Warrington BUA\",\"King's Lynn BUA\",\"Bridgwater BUA\",\"Dover BUA\",\"Maidstone BUA\",\"Durham BUA\",\"Weymouth BUA\",\"Telford BUA\",\"Hastings BUA\",\"Sunderland BUA\",\"Nuneaton BUA\",\"Pontefract BUA\",\"Folkestone BUA\",\"Andover BUA\",\"Gloucester BUA\",\"Doncaster BUA\",\"Crewe BUA\",\"Mansfield BUA\",\"Corby BUA\",\"Hartlepool BUA\",\"Great Malvern BUA\",\"Cheltenham BUA\",\"Banbury BUA\",\"Luton BUA\",\"Chesterfield BUA\",\"Bromsgrove BUA\",\"York BUA\",\"Bognor Regis BUA\",\"Spalding BUA\",\"Kirkby BUA\",\"Lowestoft BUA\",\"Accrington/Rossendale BUA\",\"Winchester BUA\",\"Cannock BUA\",\"Slough BUA\",\"Worcester BUA\",\"Nottingham BUA\",\"Royal Tunbridge Wells BUA\",\"Bristol BUA\",\"Northampton BUA\",\"Cambridge BUA\",\"Loughborough BUA\",\"Boston BUA\",\"Stoke-on-Trent BUA\",\"Derby BUA\",\"Reading BUA\",\"Felixstowe BUA\",\"Basildon BUA\",\"Harrogate BUA\",\"Leicester BUA\",\"Birkenhead BUA\",\"Horsham BUA\",\"High Wycombe BUA\",\"Peterborough BUA\",\"Rugby BUA\",\"Ipswich BUA\",\"Brighton and Hove BUA\",\"Braintree BUA\",\"Liverpool BUA\",\"Teesside BUA\",\"Welwyn Garden City BUA\",\"Bury St Edmunds BUA\",\"Wellingborough BUA\",\"Crawley BUA\",\"Farnborough/Aldershot BUA\",\"Ashford (Ashford) BUA\",\"Southport BUA\",\"Barrow-in-Furness BUA\",\"Sittingbourne BUA\",\"Brentwood BUA\",\"Skegness BUA\",\"Hereford BUA\",\"Burnley BUA\",\"Wisbech BUA\",\"Billericay BUA\",\"Coalville BUA\",\"Totton BUA\",\"Weston-Super-Mare BUA\",\"Oxford BUA\",\"Blackburn BUA\",\"Maidenhead BUA\",\"Grantham BUA\",\"Stroud BUA\",\"Alfreton/South Normanton BUA\",\"Stafford BUA\",\"Great Yarmouth BUA\",\"Macclesfield BUA\",\"Worksop BUA\",\"Castleford BUA\",\"Stevenage BUA\",\"West Yorkshire BUA\",\"Lancaster/Morecambe BUA\",\"Runcorn BUA\",\"Thanet BUA\",\"Immingham BUA\",\"Hertford/Ware BUA\",\"Northwich BUA\",\"Didcot BUA\",\"Newbury/Thatcham BUA\",\"Paignton/Torquay BUA\",\"Eastbourne BUA\",\"Grimsby BUA\",\"Kingston upon Hull BUA\",\"Kidderminster BUA\",\"Royal Leamington Spa BUA\",\"Coventry BUA\",\"Exeter BUA\",\"Barnsley/Dearne Valley BUA\",\"Canterbury BUA\",\"Newark-on-Trent BUA\",\"Aylesbury BUA\",\"Tyneside BUA\",\"Tamworth BUA\",\"Amersham/Chesham BUA\",\"Norwich BUA\",\"Chichester BUA\",\"Blackpool BUA\",\"Abingdon BUA\",\"Chelmsford BUA\",\"Wigan BUA\",\"Kettering BUA\",\"Sheffield BUA\",\"Burton upon Trent BUA\",\"South Hampshire BUA\",\"Grays BUA\",\"Sevenoaks BUA\",\"Carlisle BUA\",\"Bedford BUA\",\"Redruth BUA\",\"Plymouth BUA\",\"Lincoln BUA\",\"Bournemouth/Poole BUA\",\"Taunton BUA\",\"Herne Bay/Whitstable BUA\",\"Southend-on-Sea BUA\",\"Colchester BUA\",\"Swindon BUA\",\"West Midlands BUA\",\"Preston BUA\",\"Medway Towns BUA\"],\"bua_id\":[724,722,5434,5251,4992,2003,1628,1266,2825,2002,5071,2827,1632,3253,717,1269,3256,2280,714,5705,2819,5077,3653,723,4246,3650,5436,4495,5075,3649,5426,5431,4603,4990,2005,1261,4596,5079,4595,2821,4598,1268,4490,4606,4797,2000,4494,2279,2824,3255,720,4244,1263,4605,4491,2817,1265,4592,5709,5073,5247,5706,4604,3254,4489,5429,5244,4247,3647,5432,4594,706,4801,5248,4798,4600,4988,4795,3654,5072,4593,3251,3655,2826,3249,5245,3652,711,721,3656,5711,5712,719,1262,5710,3657,2001,5437,715,4597,5078,2820,2828,1264,4602,4492,4245,4493,2281,4601,3252,5422,710,713,4243,4800,3257,5080,4608,4599,3,5707,3250,4796,1267,5433,5427,4,5428,4991,5250,5249,5423,5435,2822,4987,5252,707,4607,3651,5076,2823,5424,5430,4591,5708,5713,712,4799,9,2,2818,5425,718,4989,3645,3648,1626,4488,5074,3646],\"has_sd\":[\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"Y\",\"Y\",\"Y\",\"N\",\"Y\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"N\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"Y\"],\"index\":[16,22,26,48,51,61,69,70,71,78,81,82,83,96,99,109,110,112,131,142,149,151,163,165,167,168,175,182,183,184,187,188,189,191,192,195,197,200,201,207,213,218,220,225,226,227,228,230,235,240,243,249,250,251,255,256,257,259,260,262,264,268,277,294,303,305,306,308,309,310,311,312,314,317,319,322,325,327,332,335,336,339,346,348,351,352,353,1120,3340,4290,4363,4421,4428,4532,4605,4612,4619,4620,4622,4624,4626,4629,4630,4640,4651,4653,4660,4689,4700,4703,4708,4710,4712,4736,4744,4745,4757,4763,4765,4777,4797,4801,4810,4818,4819,4820,4830,4833,4840,4841,4851,4852,4854,4855,4859,4860,4862,4866,4877,4879,4895,4900,4902,4903,4910,4911,4917,4918,4923,4927,4934,4941,4942,4953,4957,4958,4961,5349,5357,5358,5359],\"label\":[\"E34001481\",\"E34001962\",\"E34002141\",\"E34003525\",\"E34003679\",\"E34004181\",\"E34004306\",\"E34004403\",\"E34004408\",\"E34004725\",\"E34005054\",\"E34005056\",\"E34005057\",\"E34004674\",\"E34000181\",\"E34005005\",\"E34005007\",\"E34005009\",\"E34002820\",\"E34004707\",\"E34004192\",\"E34004251\",\"E34004389\",\"E34004393\",\"E34004398\",\"E34004399\",\"E34004487\",\"E34004617\",\"E34004622\",\"E34004625\",\"E34004630\",\"E34004633\",\"E34004648\",\"E34004664\",\"E34004668\",\"E34004693\",\"E34004696\",\"E34004762\",\"E34004765\",\"E34004788\",\"E34004909\",\"E34004294\",\"E34003710\",\"E34004982\",\"E34004983\",\"E34004985\",\"E34004991\",\"E34005036\",\"E34004154\",\"E34004218\",\"E34004262\",\"E34004315\",\"E34004905\",\"E34004906\",\"E34004939\",\"E34004940\",\"E34004941\",\"E34004946\",\"E34004963\",\"E34004965\",\"E34004611\",\"E34004798\",\"E34000597\",\"E34004383\",\"E34004612\",\"E34004638\",\"E34004640\",\"E34004644\",\"E34004645\",\"E34004646\",\"E34004647\",\"E34004654\",\"E34004659\",\"E34004704\",\"E34004715\",\"E34004720\",\"E34004730\",\"E34004748\",\"E34004796\",\"E34004801\",\"E34004802\",\"E34004821\",\"E34004836\",\"E34004890\",\"E34004880\",\"E34004885\",\"E34004908\",\"E34000633\",\"E34003078\",\"E34004134\",\"E34004246\",\"E34004327\",\"E34004334\",\"E34004743\",\"E34004554\",\"E34004599\",\"E34004547\",\"E34004548\",\"E34004551\",\"E34004572\",\"E34004557\",\"E34004560\",\"E34004561\",\"E34004596\",\"E34004585\",\"E34004587\",\"E34004602\",\"E34004660\",\"E34004671\",\"E34004675\",\"E34004682\",\"E34004684\",\"E34004686\",\"E34004843\",\"E34004846\",\"E34004847\",\"E34004859\",\"E34004756\",\"E34004758\",\"E34004776\",\"E34004813\",\"E34004862\",\"E34004917\",\"E34004839\",\"E34004840\",\"E34004841\",\"E34004855\",\"E34004858\",\"E34004869\",\"E34004870\",\"E34004948\",\"E34004954\",\"E34004998\",\"E34004999\",\"E34004892\",\"E34004893\",\"E34004895\",\"E34004900\",\"E34004922\",\"E34004924\",\"E34004959\",\"E34004967\",\"E34004969\",\"E34004970\",\"E34004977\",\"E34004978\",\"E34004987\",\"E34004988\",\"E34004993\",\"E34004997\",\"E34005012\",\"E34005030\",\"E34005031\",\"E34005041\",\"E34005045\",\"E34005046\",\"E34005048\",\"E34004828\",\"E34005001\",\"E34005039\",\"E34005040\"],\"name\":[\"Heswall BUA\",\"Yeovil BUA\",\"Darlington BUA\",\"Fleet BUA\",\"Clacton-on-Sea BUA\",\"Hinckley BUA\",\"Salisbury BUA\",\"Bath BUA\",\"Scarborough BUA\",\"Peterlee BUA\",\"Greater Manchester BUA\",\"Milton Keynes BUA\",\"Redditch BUA\",\"Redhill (Reigate and Banstead) BUA\",\"Widnes BUA\",\"Trowbridge BUA\",\"Letchworth Garden City BUA\",\"Basingstoke BUA\",\"Shrewsbury BUA\",\"Greater London BUA\",\"Scunthorpe BUA\",\"Warrington BUA\",\"King's Lynn BUA\",\"Bridgwater BUA\",\"Dover BUA\",\"Maidstone BUA\",\"Durham BUA\",\"Weymouth BUA\",\"Telford BUA\",\"Hastings BUA\",\"Sunderland BUA\",\"Nuneaton BUA\",\"Pontefract BUA\",\"Folkestone BUA\",\"Andover BUA\",\"Gloucester BUA\",\"Doncaster BUA\",\"Crewe BUA\",\"Mansfield BUA\",\"Corby BUA\",\"Hartlepool BUA\",\"Great Malvern BUA\",\"Cheltenham BUA\",\"Banbury BUA\",\"Luton BUA\",\"Chesterfield BUA\",\"Bromsgrove BUA\",\"York BUA\",\"Bognor Regis BUA\",\"Spalding BUA\",\"Kirkby BUA\",\"Lowestoft BUA\",\"Accrington/Rossendale BUA\",\"Winchester BUA\",\"Cannock BUA\",\"Slough BUA\",\"Worcester BUA\",\"Nottingham BUA\",\"Royal Tunbridge Wells BUA\",\"Bristol BUA\",\"Northampton BUA\",\"Cambridge BUA\",\"Loughborough BUA\",\"Boston BUA\",\"Stoke-on-Trent BUA\",\"Derby BUA\",\"Reading BUA\",\"Felixstowe BUA\",\"Basildon BUA\",\"Harrogate BUA\",\"Leicester BUA\",\"Birkenhead BUA\",\"Horsham BUA\",\"High Wycombe BUA\",\"Peterborough BUA\",\"Rugby BUA\",\"Ipswich BUA\",\"Brighton and Hove BUA\",\"Braintree BUA\",\"Liverpool BUA\",\"Teesside BUA\",\"Welwyn Garden City BUA\",\"Bury St Edmunds BUA\",\"Wellingborough BUA\",\"Crawley BUA\",\"Farnborough/Aldershot BUA\",\"Ashford (Ashford) BUA\",\"Southport BUA\",\"Barrow-in-Furness BUA\",\"Sittingbourne BUA\",\"Brentwood BUA\",\"Skegness BUA\",\"Hereford BUA\",\"Burnley BUA\",\"Wisbech BUA\",\"Billericay BUA\",\"Coalville BUA\",\"Totton BUA\",\"Weston-Super-Mare BUA\",\"Oxford BUA\",\"Blackburn BUA\",\"Maidenhead BUA\",\"Grantham BUA\",\"Stroud BUA\",\"Alfreton/South Normanton BUA\",\"Stafford BUA\",\"Great Yarmouth BUA\",\"Macclesfield BUA\",\"Worksop BUA\",\"Castleford BUA\",\"Stevenage BUA\",\"West Yorkshire BUA\",\"Lancaster/Morecambe BUA\",\"Runcorn BUA\",\"Thanet BUA\",\"Immingham BUA\",\"Hertford/Ware BUA\",\"Northwich BUA\",\"Didcot BUA\",\"Newbury/Thatcham BUA\",\"Paignton/Torquay BUA\",\"Eastbourne BUA\",\"Grimsby BUA\",\"Kingston upon Hull BUA\",\"Kidderminster BUA\",\"Royal Leamington Spa BUA\",\"Coventry BUA\",\"Exeter BUA\",\"Barnsley/Dearne Valley BUA\",\"Canterbury BUA\",\"Newark-on-Trent BUA\",\"Aylesbury BUA\",\"Tyneside BUA\",\"Tamworth BUA\",\"Amersham/Chesham BUA\",\"Norwich BUA\",\"Chichester BUA\",\"Blackpool BUA\",\"Abingdon BUA\",\"Chelmsford BUA\",\"Wigan BUA\",\"Kettering BUA\",\"Sheffield BUA\",\"Burton upon Trent BUA\",\"South Hampshire BUA\",\"Grays BUA\",\"Sevenoaks BUA\",\"Carlisle BUA\",\"Bedford BUA\",\"Redruth BUA\",\"Plymouth BUA\",\"Lincoln BUA\",\"Bournemouth/Poole BUA\",\"Taunton BUA\",\"Herne Bay/Whitstable BUA\",\"Southend-on-Sea BUA\",\"Colchester BUA\",\"Swindon BUA\",\"West Midlands BUA\",\"Preston BUA\",\"Medway Towns BUA\"],\"perimeter\":{\"__ndarray__\":\"AMOhRf7+5EAAUgwCA4LkQIAphxZBYvJAAXnpJgFL6UD/JLKd/x3kQAEWg8ACY+VA/xUEVn4/7UABcz0KP3z2QH9W46X/I/NAf8ZLNz2g8EATaMagXOA4QaDhpZv+rRVBgn4W2QL1/kCA+VPjwRbwQACo8dLBjfFAAW4Sg4B15ED/B1YOhSrkQCdyI7CGK/hA/4/C9UAX8kDGD8NV79hIQf6qxkuHg/pAeAkBAIIRBEEB9tR4gTPvQP9LtvN9qOhAzTjKnf9h8UCAjmznv8j8QP9VjZd+j+hAgWuR7QAf+EAshQmsThgQQYCqcD1+1f1A+U53vsDHGEF/4/up/Y/6QIGyne9/HfJAAK90k0Qj8EAALN0k/h/sQLu/Kgbf4QBBh3UGgV8CBkGAgZVDfx3yQMBGtvM/rgZB/2vn+0G58EABbRKDQB/5QAGmHFrAKvVAVqzDygFJ8UAAqfHS/YHkQNWYlhjA7PZAP975fuAIB0F/bbpJwI/5QKjO+VM/7vxAttfMoYVL60AB8KfGe7ztQP9N46UDpO9AADg1XvpL7UAQASgGv9oJQQCcxCAAfelAnoZm5UDy80Au3aNFYOICQX9eEFhBdvdAnrn6fs8uH0Er/a1wQfjyQOK6XY+wBBlBvpZDi2CqA0EAnJmZv2IEQQC8HFoEqOZAANajcEGa8UDBntdNni4YQQAJrBxgsgpBoC6ynXCrEUH/spvEgPnnQEBPjZc+wQdB/rcehb8R9UAFYCyHLjsSQbr+FK5Blw5BAAwtsv0840BAZZHtQtsLQT91vp9AFwJB/4gW2b749ED/oEW2XYQBQYBeukmAfQtBWoe+dH/M8kCX+b6fDqoYQZ+wHFrRRBNBgIWVQ7vU+kAB4KWbfFLuQPsN/qkB7+9AMYc3M+AHE0HiNl66wDwSQaxveJOAY/dAf7fIdj4X8kAuDRLT+eDpQAFFN4l58+hAejb0JoFM70AAaZHtQFXwQIDKSzfBbvJAEIg0MwHgBUHi4nrpAkr1QADUzvf/NfBAgDjfT0Ew8kD/MrTIwofyQP9yFK7/6/NAl9bP95/vBUFk+iYGfbb+QH4DVg4B2vZAAJTC9YCV50CjzpQYYGYGQX/EILA+VvRAX9xtkcEk9kABkEOLBOHpQIGn7E+Bv/BA/+h6FIYr6EABbLx0/xDyQABdDi2CielAXhi7CZi2NUF/dOkmgUr3QP+FQWCBDPlAf/9VDgE+90AAgOtRwNjxQAAvMzN7g+pAfjeLbMOP+UACeWZmhq7nQIF8FK6/g/tAydpJtj9e+0DPBrHGvx73QCHmbefDkP1A67tzaMH4BEEACtejAPvtQID/1HiB5fJAv1HjpX+NEEH/auf7vVf6QB+HFtnfzxNBgIHAyv0d9EAATDeJAa3xQADOJAb5rulAX+B6FB/AH0F/SAwCQ/7xQAD8/dSAzvpAHtrMof8qBkEBpMZL/17uQMG3HoUfAgVBAuxRuH4y60B/OArXfxL4QP7OoUVidAxB/3e+n3om7UBGVvco8FYdQUCfmZnB+QhBYBz2KP8EJEFPx9qjwDj7QP9yFK7/8+pAgPj91IBR+kAAu0kMAub0QH+aQ4v8tPhAaJ90kWDXCEF/4U+NPxT/QC74UriQwhZBkJTxUQCb9EB/3k+Nf/L0QII9NV6eLghBRxppkUEjAEEAgGq8APgBQVj0Gi8QQClBuuRFtr0+GkHATjeJXw0AQQ==\",\"dtype\":\"float64\",\"shape\":[161]},\"sd_count\":[0,0,0,0,0,0,0,0,0,3,72,4,2,3,0,2,2,2,0,104,0,0,0,0,0,0,0,2,2,2,14,2,3,3,2,3,5,2,7,3,2,0,0,2,3,7,4,2,0,0,0,0,9,2,2,5,2,23,2,13,4,6,0,0,4,5,8,2,6,2,9,5,3,6,2,2,6,7,5,9,10,4,3,3,16,13,3,0,0,0,0,0,0,11,2,4,4,3,2,6,3,5,2,8,3,3,2,2,2,2,2,42,3,3,3,2,2,2,2,6,3,2,5,4,2,3,3,3,11,2,5,2,16,3,3,9,5,7,2,2,6,3,10,5,16,4,2,3,3,3,2,2,10,4,3,6,2,3,33,14,3]}},\"id\":\"8c1cdcee-b552-41c8-afb1-471d6bde763a\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"Leafiness Mean\",\"formatter\":{\"id\":\"7103e1f7-5dfd-430d-bcf1-d5c535f8d6da\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8526f981-989d-4035-86a2-b78e6ced7522\",\"type\":\"BasicTicker\"}},\"id\":\"36104b15-5495-495e-a835-eb75837a7337\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"names\":[\"main\"],\"tooltips\":[[\"name\",\"@name\"]]},\"id\":\"e552686b-2d94-47ab-ad03-7d1cca5863e4\",\"type\":\"HoverTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2390987f-9cdf-4cca-9077-789636189a48\",\"type\":\"BasicTicker\"}},\"id\":\"12caf88e-af1b-4ea5-9413-b9935f7942fa\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2390987f-9cdf-4cca-9077-789636189a48\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"934946b1-4ada-4106-8698-4d661194ef8a\",\"type\":\"BoxAnnotation\"}},\"id\":\"5796c501-522c-45ed-954f-1a297e68e173\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"Leaf_mean\"},\"y\":{\"field\":\"Leaf_cv\"}},\"id\":\"4ee06195-59ec-41d4-ad69-ca004ce61dca\",\"type\":\"X\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"5796c501-522c-45ed-954f-1a297e68e173\",\"type\":\"BoxZoomTool\"},{\"id\":\"280abfbb-e477-4253-899e-f1c18d369189\",\"type\":\"ResetTool\"},{\"id\":\"e552686b-2d94-47ab-ad03-7d1cca5863e4\",\"type\":\"HoverTool\"}]},\"id\":\"3d392a82-2e3a-4f1e-a428-f338ab2e375a\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"193d0445-57ba-4cec-8224-daa84c76b275\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"280abfbb-e477-4253-899e-f1c18d369189\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"Leafiness CV\",\"formatter\":{\"id\":\"193d0445-57ba-4cec-8224-daa84c76b275\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2390987f-9cdf-4cca-9077-789636189a48\",\"type\":\"BasicTicker\"}},\"id\":\"d1aae01d-d665-4c30-b08b-23ce2836d835\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"8c1cdcee-b552-41c8-afb1-471d6bde763a\",\"type\":\"ColumnDataSource\"}},\"id\":\"b6055730-0f49-4eb8-bcd3-e54b9746d9cf\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"8c1cdcee-b552-41c8-afb1-471d6bde763a\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"4ee06195-59ec-41d4-ad69-ca004ce61dca\",\"type\":\"X\"},\"hover_glyph\":null,\"muted_glyph\":null,\"name\":\"main\",\"nonselection_glyph\":{\"id\":\"087f8a89-19ba-4a79-94b6-7bef5f3f1135\",\"type\":\"X\"},\"selection_glyph\":null,\"view\":{\"id\":\"b6055730-0f49-4eb8-bcd3-e54b9746d9cf\",\"type\":\"CDSView\"}},\"id\":\"47a5d766-00d4-4b3e-a68c-dc4ba0268d1b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"89952268-29c5-4f12-b06f-c96aaf13fcc2\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"Leaf_mean\"},\"y\":{\"field\":\"Leaf_cv\"}},\"id\":\"087f8a89-19ba-4a79-94b6-7bef5f3f1135\",\"type\":\"X\"},{\"attributes\":{},\"id\":\"7103e1f7-5dfd-430d-bcf1-d5c535f8d6da\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"934946b1-4ada-4106-8698-4d661194ef8a\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"34aa4376-956a-4008-bcf0-09306ecc4a0a\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n var render_items = [{\"docid\":\"15dd540d-6e8e-4f79-9620-88b92627fa09\",\"elementid\":\"a7f203d5-ab57-430c-b1ff-0cf1e32b2638\",\"modelid\":\"34aa4376-956a-4008-bcf0-09306ecc4a0a\"}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n var attempts = 0;\n var timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n embed_document(root);\n clearInterval(timer);\n }\n attempts++;\n if (attempts > 100) {\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n clearInterval(timer);\n }\n }, 10, root)\n }\n})(window);",
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "34aa4376-956a-4008-bcf0-09306ecc4a0a"
}
}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.4",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist_id": "39e93610d98d8ae89988307886bacf87"
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment