开局王炸?阿里P8大佬用Python绘制精美地图神器!超详细(课件资料都在这,你不心动?)

本文介绍了Python地图绘制库folium的使用,包括安装、基础使用和实战案例。通过folium,你可以轻松创建交互式地图,自定义地图元素,如标记和颜色。文中展示了从世界地图到城市级别的地图绘制,以及如何在地图上添加普通标记和圆形标记。此外,还提供了从网络爬取停车场地理位置数据并进行可视化的实例。
摘要由CSDN通过智能技术生成

前文

热烈欢迎:

张总、李总、刘总、赵总、曾总、廖总、郭总、柏总、贾总、毕总、陶总、彭总、丁总、杨总、朱总、周总、吴总、蒋总、韩总、杨总、何总、吕总、钱总、陈总、魏总、韦总、卫总、王总,来看我的文章!

想要绘制更精美的可视化地图?想在地图上自由的设置各种参数?想获得灵活的交互体验?

今天它就来了,Python绘制地图神器folium,上手直接开大!

 

一、folium简介和安装

folium 建立在 Python 生态系统的数据应用能力和 Leaflet.js 库的映射能力之上,在Python中操作数据,然后通过 folium 在 Leaflet 地图中可视化。

folium 相比较于国内百度的 pyecharts 灵活性更强,能够自定义绘制区域,并且展现形式更加多样化。[1]

 

1. folium的简介

  • Folium是建立在 Python 生态系统的数据整理 Datawrangling 能力和 Leaflet.js 库的映射能力之上的开源库。用 Python 处理数据,然后用 Folium 将它在 Leaflet 地图上进行可视化。Folium能够将通过 Python 处理后的数据轻松地在交互式的 Leaflet 地图上进行可视化展示。它不单单可以在地图上展示数据的分布图,还可以使用 Vincent/Vega 在地图上加以标记。

  • 这个开源库中有许多来自 OpenStreetMap、MapQuest Open、MapQuestOpen Aerial、Mapbox和Stamen 的内建地图元件,而且支持使用 Mapbox 或 Cloudmade 的 API 密钥来定制个性化的地图元件。Folium支持 GeoJSON 和 TopoJSON 两种文件格式的叠加,也可以将数据连接到这两种文件格式的叠加层,最后可使用 color-brewer 配色方案创建分布图。

  • Folium可以让你用 Python 强大生态系统来处理数据,然后用 Leaflet 地图来展示。Folium内置一些来自 OpenStreetMap、MapQuest Open、MapQuest Open Aerial、Mapbox和Stamen 的地图元件(tilesets),并且支持用 Mapbox 或者 Cloudmade API keys 来自定义地图元件。Folium支持 GeoJSON 和 TopJSON 叠加(overlays),绑定数据来创造一个分级统计图(Choropleth map)。但是,Folium库绘制热点图的时候,需要联网才可显示。

 

2. 安装folium

pip install folium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

👆这里直接使用了国内豆瓣源

 

二、基本使用

folium 显示地图的类为 folium.Map,类的声明如下:

class folium.Map(location=None, width='100%', height='100%', left='0%', top='0%', position='relative', tiles='OpenStreetMap', attr=None, min_zoom=0, max_zoom=18, zoom_start=10, min_lat=-90, 
好的,以下是用hbuilder canvas制作两人五子棋游戏并且在重新开局时清除所有棋子的详细代码: HTML部分: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>五子棋游戏</title> <style> canvas { border: 1px solid #ccc; } </style> </head> <body> <canvas id="myCanvas" width="450" height="450"></canvas> <button onclick="resetGame()">重新开始</button> </body> <script src="app.js"></script> </html> ``` JavaScript部分: ```javascript var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); // 画棋盘 function drawBoard() { for (var i = 0; i < 15; i++) { context.moveTo(15 + i * 30, 15); context.lineTo(15 + i * 30, 435); context.stroke(); context.moveTo(15, 15 + i * 30); context.lineTo(435, 15 + i * 30); context.stroke(); } } // 落子函数 function oneStep(i, j, me) { context.beginPath(); context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI); context.closePath(); var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 - 2, 13, 15 + i * 30 + 2, 15 + j * 30 - 2, 0); if (me) { gradient.addColorStop(0, "#0a0a0a"); gradient.addColorStop(1, "#636766"); } else { gradient.addColorStop(0, "#D1D1D1"); gradient.addColorStop(1, "#F9F9F9"); } context.fillStyle = gradient; context.fill(); } // 初始化棋盘 var chessBoard = []; for (var i = 0; i < 15; i++) { chessBoard[i] = []; for (var j = 0; j < 15; j++) { chessBoard[i][j] = 0; } } // 初始化落子方 var me = true; canvas.onclick = function(e) { if (over) { return; } if (!me) { return; } var x = e.offsetX; var y = e.offsetY; var i = Math.floor(x / 30); var j = Math.floor(y / 30); if (chessBoard[i][j] === 0) { oneStep(i, j, me); chessBoard[i][j] = 1; for (var k = 0; k < count; k++) { if (wins[i][j][k]) { myWin[k]++; computerWin[k] = 6; if (myWin[k] === 5) { window.alert("你赢了!"); over = true; } } } if (!over) { me = !me; computerAI(); } } }; // 重新开始游戏 function resetGame() { context.clearRect(0, 0, canvas.width, canvas.height); drawBoard(); over = false; myWin = []; computerWin = []; myWin.length = count; computerWin.length = count; for (var i = 0; i < count; i++) { myWin[i] = 0; computerWin[i] = 0; } for (var i = 0; i < 15; i++) { chessBoard[i] = []; for (var j = 0; j < 15; j++) { chessBoard[i][j] = 0; } } me = true; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值