Skip to content

Instantly share code, notes, and snippets.

@vaclavdekanovsky
Last active July 16, 2020 22:04
Show Gist options
  • Select an option

  • Save vaclavdekanovsky/5a93114298cb24e890e59c5e65ca5a94 to your computer and use it in GitHub Desktop.

Select an option

Save vaclavdekanovsky/5a93114298cb24e890e59c5e65ca5a94 to your computer and use it in GitHub Desktop.
Simple Map with Folium
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Sample Data including geographical location\n",
"data = \"\"\"Name,Address,Lat,Lon\n",
"EU,\"Rue de la Loi/Wetstraat 175, Brussel, Belgium\",50.842313,4.382300\n",
"Apple,\"1 Apple Park Way, Cupertino, CA\",37.329428,-122.010258\n",
"Google,\"1600 Amphitheatre Parkway Mountain View, CA 94043\",37.422058,-122.084090\n",
"UN,\"760 United Nations Plaza; Manhattan, New York City\",40.748898,-73.968209\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import io"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"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>Name</th>\n",
" <th>Address</th>\n",
" <th>Lat</th>\n",
" <th>Lon</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>EU</td>\n",
" <td>Rue de la Loi/Wetstraat 175, Brussel, Belgium</td>\n",
" <td>50.842313</td>\n",
" <td>4.382300</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>Apple</td>\n",
" <td>1 Apple Park Way, Cupertino, CA</td>\n",
" <td>37.329428</td>\n",
" <td>-122.010258</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>Google</td>\n",
" <td>1600 Amphitheatre Parkway Mountain View, CA 94043</td>\n",
" <td>37.422058</td>\n",
" <td>-122.084090</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>UN</td>\n",
" <td>760 United Nations Plaza; Manhattan, New York ...</td>\n",
" <td>40.748898</td>\n",
" <td>-73.968209</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Address Lat \\\n",
"0 EU Rue de la Loi/Wetstraat 175, Brussel, Belgium 50.842313 \n",
"1 Apple 1 Apple Park Way, Cupertino, CA 37.329428 \n",
"2 Google 1600 Amphitheatre Parkway Mountain View, CA 94043 37.422058 \n",
"3 UN 760 United Nations Plaza; Manhattan, New York ... 40.748898 \n",
"\n",
" Lon \n",
"0 4.382300 \n",
"1 -122.010258 \n",
"2 -122.084090 \n",
"3 -73.968209 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(io.StringIO(data))\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjYuMC9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjYuMC9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF82NjU2ZDJhNTVlYTY0Y2Y5OWRiODhkNWRjZWJkMDZjOSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9NYXJrZXJDbHVzdGVyLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIvPgo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzY2NTZkMmE1NWVhNjRjZjk5ZGI4OGQ1ZGNlYmQwNmM5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcF82NjU2ZDJhNTVlYTY0Y2Y5OWRiODhkNWRjZWJkMDZjOSA9IEwubWFwKAogICAgICAgICAgICAgICAgIm1hcF82NjU2ZDJhNTVlYTY0Y2Y5OWRiODhkNWRjZWJkMDZjOSIsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBbNDEuNTg1Njc0MjUsIC03OC40MjAwNjQyNV0sCiAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICAgICAgICAgICAgICB6b29tOiAyLAogICAgICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIHByZWZlckNhbnZhczogZmFsc2UsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAKCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYjFiMmJhMjE0NjhlNDBlZGI1ZjliNDEzNmQ4ZmZjYTAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICJodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZyIsCiAgICAgICAgICAgICAgICB7ImF0dHJpYnV0aW9uIjogIkRhdGEgYnkgXHUwMDI2Y29weTsgXHUwMDNjYSBocmVmPVwiaHR0cDovL29wZW5zdHJlZXRtYXAub3JnXCJcdTAwM2VPcGVuU3RyZWV0TWFwXHUwMDNjL2FcdTAwM2UsIHVuZGVyIFx1MDAzY2EgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCJcdTAwM2VPRGJMXHUwMDNjL2FcdTAwM2UuIiwgImRldGVjdFJldGluYSI6IGZhbHNlLCAibWF4TmF0aXZlWm9vbSI6IDE4LCAibWF4Wm9vbSI6IDE4LCAibWluWm9vbSI6IDAsICJub1dyYXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLCAic3ViZG9tYWlucyI6ICJhYmMiLCAidG1zIjogZmFsc2V9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY2NTZkMmE1NWVhNjRjZjk5ZGI4OGQ1ZGNlYmQwNmM5KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfMDAwNzQ4MGM2MmNiNDc5ZjliYTQ4MzM1ZjhjYjJmMmMgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG1hcF82NjU2ZDJhNTVlYTY0Y2Y5OWRiODhkNWRjZWJkMDZjOS5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl8wMDA3NDgwYzYyY2I0NzlmOWJhNDgzMzVmOGNiMmYyYyk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNjdmYTA5Zjg5MjE0ZjE0YTM5NmE4YjI3NzE4MjJlMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjg0MjMxMywgNC4zODIzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDAwNzQ4MGM2MmNiNDc5ZjliYTQ4MzM1ZjhjYjJmMmMpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2QyMGQ3ZTRkOWRkNjQzODU5OGFmMDhjNWEyZGJmOTAyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81MmQ2OGQ5NTAzZWY0ZGNmODQ1NTJjYTg0N2M5ZGU2ZSA9ICQoYDxkaXYgaWQ9Imh0bWxfNTJkNjhkOTUwM2VmNGRjZjg0NTUyY2E4NDdjOWRlNmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVVPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2QyMGQ3ZTRkOWRkNjQzODU5OGFmMDhjNWEyZGJmOTAyLnNldENvbnRlbnQoaHRtbF81MmQ2OGQ5NTAzZWY0ZGNmODQ1NTJjYTg0N2M5ZGU2ZSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kNjdmYTA5Zjg5MjE0ZjE0YTM5NmE4YjI3NzE4MjJlMi5iaW5kUG9wdXAocG9wdXBfZDIwZDdlNGQ5ZGQ2NDM4NTk4YWYwOGM1YTJkYmY5MDIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIG1hcmtlcl9kNjdmYTA5Zjg5MjE0ZjE0YTM5NmE4YjI3NzE4MjJlMi5iaW5kVG9vbHRpcCgKICAgICAgICAgICAgICAgIGA8ZGl2PgogICAgICAgICAgICAgICAgICAgICBFVQogICAgICAgICAgICAgICAgIDwvZGl2PmAsCiAgICAgICAgICAgICAgICB7InN0aWNreSI6IHRydWV9CiAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80ODk5OTNmZTY1OGE0NjA0YTAzMDJhMTQ4MTA2MThkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjMyOTQyOCwgLTEyMi4wMTAyNTgwMDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAwMDc0ODBjNjJjYjQ3OWY5YmE0ODMzNWY4Y2IyZjJjKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82NWMyODY1MDZkOTQ0MjljYjI1YzQ4NGY0MjMwODkxYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMmYwNmEyZDYyMzlmNGRhOThlMGY3ZjNhMDU4NzFiODIgPSAkKGA8ZGl2IGlkPSJodG1sXzJmMDZhMmQ2MjM5ZjRkYTk4ZTBmN2YzYTA1ODcxYjgyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BcHBsZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82NWMyODY1MDZkOTQ0MjljYjI1YzQ4NGY0MjMwODkxYy5zZXRDb250ZW50KGh0bWxfMmYwNmEyZDYyMzlmNGRhOThlMGY3ZjNhMDU4NzFiODIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDg5OTkzZmU2NThhNDYwNGEwMzAyYTE0ODEwNjE4ZDcuYmluZFBvcHVwKHBvcHVwXzY1YzI4NjUwNmQ5NDQyOWNiMjVjNDg0ZjQyMzA4OTFjKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICBtYXJrZXJfNDg5OTkzZmU2NThhNDYwNGEwMzAyYTE0ODEwNjE4ZDcuYmluZFRvb2x0aXAoCiAgICAgICAgICAgICAgICBgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgQXBwbGUKICAgICAgICAgICAgICAgICA8L2Rpdj5gLAogICAgICAgICAgICAgICAgeyJzdGlja3kiOiB0cnVlfQogICAgICAgICAgICApOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2NmNGYzMDc3MmQzNGIxY2I4YzE1NzdjZGMzY2E5ZjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy40MjIwNTgsIC0xMjIuMDg0MDg5OTk5OTk5OTldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMDA3NDgwYzYyY2I0NzlmOWJhNDgzMzVmOGNiMmYyYyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMjE2NDMxZDJlNTM5NGVhNzgyY2Y5MTIwODI3OWRmZTcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRmNTRlZmY2NTE0ZTQ0NzRiMGY1MTg0MzBhMmZlNTVhID0gJChgPGRpdiBpZD0iaHRtbF80ZjU0ZWZmNjUxNGU0NDc0YjBmNTE4NDMwYTJmZTU1YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R29vZ2xlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzIxNjQzMWQyZTUzOTRlYTc4MmNmOTEyMDgyNzlkZmU3LnNldENvbnRlbnQoaHRtbF80ZjU0ZWZmNjUxNGU0NDc0YjBmNTE4NDMwYTJmZTU1YSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zY2Y0ZjMwNzcyZDM0YjFjYjhjMTU3N2NkYzNjYTlmMS5iaW5kUG9wdXAocG9wdXBfMjE2NDMxZDJlNTM5NGVhNzgyY2Y5MTIwODI3OWRmZTcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIG1hcmtlcl8zY2Y0ZjMwNzcyZDM0YjFjYjhjMTU3N2NkYzNjYTlmMS5iaW5kVG9vbHRpcCgKICAgICAgICAgICAgICAgIGA8ZGl2PgogICAgICAgICAgICAgICAgICAgICBHb29nbGUKICAgICAgICAgICAgICAgICA8L2Rpdj5gLAogICAgICAgICAgICAgICAgeyJzdGlja3kiOiB0cnVlfQogICAgICAgICAgICApOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGI4ZWQyNTVhZjgzNDcxMmExMTU2NGQxYjI2ZTVlYzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NDg4OTgsIC03My45NjgyMDldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMDA3NDgwYzYyY2I0NzlmOWJhNDgzMzVmOGNiMmYyYyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZThmOTk1YzY2ZGMxNDFmODkxYmE0MTYyMjQyNzI5NWIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRlODc4NGNkYmVlNjQ5NzU5MzkyMmY2OWRlNmEzOGQzID0gJChgPGRpdiBpZD0iaHRtbF80ZTg3ODRjZGJlZTY0OTc1OTM5MjJmNjlkZTZhMzhkMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VU48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZThmOTk1YzY2ZGMxNDFmODkxYmE0MTYyMjQyNzI5NWIuc2V0Q29udGVudChodG1sXzRlODc4NGNkYmVlNjQ5NzU5MzkyMmY2OWRlNmEzOGQzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2RiOGVkMjU1YWY4MzQ3MTJhMTE1NjRkMWIyNmU1ZWM4LmJpbmRQb3B1cChwb3B1cF9lOGY5OTVjNjZkYzE0MWY4OTFiYTQxNjIyNDI3Mjk1YikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgbWFya2VyX2RiOGVkMjU1YWY4MzQ3MTJhMTE1NjRkMWIyNmU1ZWM4LmJpbmRUb29sdGlwKAogICAgICAgICAgICAgICAgYDxkaXY+CiAgICAgICAgICAgICAgICAgICAgIFVOCiAgICAgICAgICAgICAgICAgPC9kaXY+YCwKICAgICAgICAgICAgICAgIHsic3RpY2t5IjogdHJ1ZX0KICAgICAgICAgICAgKTsKICAgICAgICAKPC9zY3JpcHQ+ onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x2873cebdf08>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# import packages, see https://python-visualization.github.io/folium/\n",
"import folium\n",
"from folium.plugins import MarkerCluster\n",
"\n",
"# center to the mean of all points\n",
"m = folium.Map(location=df[[\"Lat\", \"Lon\"]].mean().to_list(), zoom_start=2)\n",
"\n",
"# if the points are too close to each other, cluster them, create a cluster overlay with MarkerCluster\n",
"marker_cluster = MarkerCluster().add_to(m)\n",
"\n",
"# draw the markers and assign popup and hover texts\n",
"# add the markers the the cluster layers so that they are automatically clustered\n",
"for i,r in df.iterrows():\n",
" location = (r[\"Lat\"], r[\"Lon\"])\n",
" folium.Marker(location=location,\n",
" popup = r['Name'],\n",
" tooltip=r['Name'])\\\n",
" .add_to(marker_cluster)\n",
"\n",
"# display the map\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# dave to a file\n",
"m.save(\"folium_map.html\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment