Python生态绘图类库:Folium、PlotNine、LeafMap、PyGal、CartoPy、floWeaver

发布时间:2026/9/22 18:07:53

Python生态绘图类库:Folium、PlotNine、LeafMap、PyGal、CartoPy、floWeaver 继Python生态绘图类库Plotly、Altair、bqplot、plotlet之后本文继续汇总Python生态下特定领域下的绘图类库。Folium项目主页地图画图工具开源GitHub7.4K Star2.3K Fork类库基于Leaflet.js可在Jupyter Notebook里画出可缩放、可拖拽、带标记点的交互式地图。适用场景场景说明数据可视化报告在Jupyter里展示地理数据分布门店/网点分布图批量打点直观看到覆盖范围路线规划展示把GPS轨迹画出来热力图分析如人口密度、事故高发区实战基于pip安装pip install folium示例importfolium# 创建地图定位到北京mfolium.Map(location[39.9042,116.4074],zoom_start12)# 加标记点folium.Marker([39.9042,116.4074],popup天安门,iconfolium.Icon(colorred,iconinfo-sign)).add_to(m)# 保存HTML文件m.save(map.html)# 在Jupyter里直接显示m批量打点importfoliumfromfolium.pluginsimportHeatMapimportpandasaspd# 门店数据storespd.DataFrame({name:[店A,店B,店C],lat:[39.90,39.92,39.88],lng:[116.40,116.42,116.38]})mfolium.Map(location[39.90,116.40],zoom_start13)for_,rowinstores.iterrows():folium.Marker([row[lat],row[lng]],popuprow[name]).add_to(m)# 用经纬度数据生成热力图heat_data[[row[lat],row[lng]]for_,rowinstores.iterrows()]HeatMap(heat_data).add_to(m)m效果图画区域、画路径# 画折线folium.PolyLine(locations[(39.90,116.40),(39.92,116.42),(39.88,116.38)],colorblue,weight5).add_to(m)# 画圆如覆盖范围folium.Circle(location[39.90,116.40],radius1000,# 米colorred,fillTrue).add_to(m)展示效果PlotNine官网图形语法绘图开源GitHub4.8K Star254 Fork库把ggplot2风格的Grammar of Graphics带到Python强调数据、映射、几何对象、坐标和分面等概念比先画线再调样式的过程更声明式官方文档。适合统计探索、分组对比、教学材料、希望用一致语法组织复杂统计图、从R或ggplot2迁移来的团队以及需要统一图形语法的分析脚本。不适合极复杂的交互式Web图表或需要直接操控Matplotlib底层每个Artist的精细场景。特点语法清晰用aes、geom、facet、coord组合图表表达意图很明确适合统计图分面、颜色映射、几何层叠很自然承接PandasDataFrame字段直接进入映射分析脚本里衔接顺。实战基于pip安装pip install plotnine示例importpandasaspdfromplotnineimportaes,coord_flip,facet_wrap,geom_point,geom_col,ggplot,stat_smooth,theme_xkcd,theme_tufte,theme_minimalfromplotnine.dataimportmtcars(ggplot(mtcars,aes(wt,mpg,colorfactor(gear)))# 调用mtcars数据集以车重wt与每加仑行驶英里数mpg为坐标颜色受gear影响geom_point())绘制效果图(ggplot(mtcars,aes(wt,mpg,colorfactor(gear)))geom_point()stat_smooth(methodlm)# 绘制线性拟合曲线)效果图需要等十几秒钟(ggplot(mtcars,aes(wt,mpg,colorfactor(gear)))geom_point()stat_smooth(methodlm)facet_wrap(gear)# 按gear进行分组以多面展示数据)效果图(ggplot(mtcars,aes(wt,mpg,colorfactor(gear)))geom_point()stat_smooth(methodlm)facet_wrap(gear)theme_xkcd()# 绘制手绘风格主题# theme_tufte() # Tufte 风格主题# theme_minimal() # 系统默认# theme_bw() # 系统默认)可能会输出字体不存在渲染没有什么较大影响findfont: Font family xkcd not found. findfont: Font family Humor Sans not found.不想看到警告信息添加两行代码importlogging logging.getLogger(matplotlib.font_manager).setLevel(logging.ERROR)渲染效果也可从xkcd-font官网下载xkcd.ttf字体文件。更多示例dfpd.DataFrame({x:[1,2,3],y:[2,5,3]})pggplot(df,aes(x,y))geom_point()figp.draw(showFalse)print(layers:,len(p.layers))print(axes:,len(fig.axes))dfpd.DataFrame({team:[A,B,C],score:[7,4,9]})pggplot(df,aes(team,score))geom_col(fill#4c78a8)coord_flip()figp.draw(showFalse)print(layers:,len(p.layers))print(coord:,type(p.coordinates).__name__)print(axes:,len(fig.axes))dfpd.DataFrame({x:[1,2,1,2],y:[3,5,2,7],team:[A,A,B,B]})pggplot(df,aes(x,y,colorteam))geom_point(size3)facet_wrap(team)figp.draw(showFalse)print(facets:,type(p.facet).__name__)print(panels:,len(fig.axes))解读把不同统计视角拆成geom和facet比在一段imperative代码里不断改axes更容易维护。注意事项固定输入字段、数据量范围和缺失值策略明确图表是静态导出、Notebook交互、桌面GUI还是Web嵌入在目标运行环境里做一次渲染或导出验证LeafMap官网基于folium开源GitHub3.8K Star469 Fork零代码地理数据分析与交互式绘图包。能力超多后端随意切换可切换到folium、ipyleaflet、kepler.gl、pydeck、bokeh等不同后端根据场景选最顺手的工具交互式绘图工具内置图形界面很多操作如加载数据、画图不用写代码在Jupyter里点点鼠标就能完成分析能力强大集成WhiteboxTools分析工具库可直接在地图上进行水文分析、地形分析、LiDAR数据处理等对新手和专家都友好初学者能快速上手出图专业用户也能用它处理复杂的空间数据和分析任务实战基于pip安装pip install leafmap示例PyGal官网SVG 图表生成开源GitHub2.8K Star419 Fork。创建图表对象、设置标签、添加series、渲染为SVG。相比大型交互式可视化框架更适合在文档、邮件图表、静态页面和报告里产出可缩放矢量图、需要SVG文件的自动化脚本以及需要轻量、可嵌入、无需复杂前端依赖时。适合在构建流程里生成、缓存、嵌入而不是依赖运行时再画。不适合高度复杂的交互式分析平台或需要海量数据点实时重绘的科学计算界面。特点SVG输出图表天然可缩放适合文档和静态页面API简洁Bar、Line、Radar等图表对象直接添加数据即可依赖轻不用完整前端框架也能生成可用图表资产实战基于pip安装pip install pygal示例importpygal chartpygal.Bar()chart.titlesaleschart.x_labels[Jan,Feb,Mar]chart.add(sales,[120,160,90])svgchart.render()print(series:,len(chart.raw_series))print(svg bytes:,len(svg))chartpygal.Line(interpolatecubic)chart.add(A,[1,3,2,5])chart.add(B,[2,2,4,3])names[meta[title]fordata,metainchart.raw_series]svgchart.render()print(series names:,names)print(series count:,len(chart.raw_series))print(svg bytes:,len(svg))chartpygal.Radar()chart.x_labels[speed,quality,cost]chart.add(plan A,[8,7,5])chart.add(plan B,[6,9,7])svgchart.render(is_unicodeTrue)print(radar labels:,list(chart.x_labels))print(has svg:,svg.lstrip().startswith(?xml))CartoPy面向地图绘制和地理投影的开源GitHub1.6K Star396 Fork库常和Matplotlib、NumPy、GeoPandas一起使用。把经纬度坐标、投影坐标、地图要素和坐标轴变换放进同一套模型里管理。适合气象图、海洋航线、遥感辅助图、区域统计地图等场景下的可视化官方文档。特点投影清楚CRS对象负责坐标系统和变换适合在图上混合经纬度、墨卡托等坐标要素可控Natural Earth要素可按类别和比例尺组织便于控制海岸线、陆地等素材生态兼容和Matplotlib配合紧密适合把科学计算结果落到地图视图里不适合只想快速在网页里拖动地图的场景这类需求通常Leaflet、Mapbox或Folium更合适。实战基于pip安装pip install cartopy示例importcartopy.crsasccrsimportcartopy.featureascfeatureimportnumpyasnp srcccrs.PlateCarree()dstccrs.Mercator()ptsdst.transform_points(src,np.array([0,120]),np.array([0,30]))fmtlambdarow:[float(round(v,2))forvinrow[:2]]print(threshold:,round(src.threshold,3))print(points:,pts.shape)print(x0/y0:,fmt(pts[0]))print(x1/y1:,fmt(pts[1]))landcfeature.NaturalEarthFeature(physical,land,110m)print(feature:,land.name)print(category:,land.category)print(scale:,land.scale)解读把经纬度点转换到Web/墨卡托类坐标验证数据坐标能进入目标投影定义Natural Earth地图要素后续可交给Matplotlib轴对象渲染注意事项固定Python、核心库和系统依赖版本避免环境漂移用小样本覆盖输入边界、空值、异常值和坐标/数组维度把外部服务、投影数据或编译依赖写进部署文档floWeaver开源GitHub464 Star89 Fork流数据可视化可将类似于“源-目标-数值”这种表单数据变成比例精准、配色高级的桑基图官方文档。组件floWeaver负责逻辑层ipysankeywidget负责在Jupyter里渲染图表用ProcessGroup定义聚合类别用Waypoint标记节点SankeyDefinition负责布局Weave负责数据映射。实战基于pip安装pip install floweaver示例fromfloweaverimportSankeyDefinition,WeavefromfloweaverimportProcessGroup,Waypointimportpandasaspd group_electProcessGroup(电子产品)group_homeProcessGroup(家居生活)group_clothProcessGroup(服饰美妆)w_electWaypoint(group_elect,title电子)w_homeWaypoint(group_home,title家居)w_clothWaypoint(group_cloth,title服装)sankey_defSankeyDefinition(flows[(w_elect,w_home),(w_elect,w_cloth),(w_home,w_cloth)],waypoints[w_elect,w_home,w_cloth])datapd.DataFrame({source:[电子,电子,家居],target:[家居,服装,服装],value:[100,50,30]})weaveWeave(sankey_def,data,link_columns[source,target,value])weave.to_widget()sankey_def.flows[(w_elect,w_home),(w_home,w_cloth)]weave_newWeave(sankey_def,data,link_columns[source,target,value])weave_new.to_widget()TODO上述代码在2.0.1版本跑不通。优势在于它把“流”的语法抽象得非常干净几行代码就能出专业级桑基图且配色省心。不足高度绑定ipysankeywidget只能用于Jupyter Notebook或Lab没法直接导出PNG或用在Django网站上。
延伸阅读

更多相关文章

2026/9/22 18:35:24

Vue 中 ref 和 reactive 有什么区别?该用哪个?

Vue 中 ref 和 reactive 有什么区别?该用哪个? 一句话总结:ref 适合「基本类型 需要重新赋值」的场景,reactive 适合「对象/数组 不需要整体替换」的场景。记不住?基本类型用 ref,对象用 reactive&#x…

2026/9/22 18:35:22

网站建设的目标是什么

在这个互联网早已融入我们呼吸节奏的时代,很多企业主,尤其是那些在传统行业摸爬滚打多年的老板,每当聊到“建网站”这个话题时,眼神里总带着一种复杂的迷茫。这种迷茫,一半来源于对新技术的不熟悉,另一半则是因为他们根本不知道花钱做出来的东西到底该怎么用。很多人抱着…

2026/9/22 7:42:52

136、LLC谐振变换器的数字频率跟踪控制

136、LLC谐振变换器的数字频率跟踪控制 从一次炸机说起 去年夏天,我调试一台3kW的LLC电源,负载从空载切到半载,谐振腔电流波形突然扭曲,紧接着一声闷响——MOSFET炸了。示波器抓到的最后波形显示,开关频率在切换瞬间跳到了谐振频率以下,进入了容性区。这就是典型的频率…

2026/9/22 18:36:21

3个区块链应用成功案例揭秘:面试必问的性能优化实战

3个区块链应用成功案例揭秘:面试必问的性能优化实战 面试时被问“你们项目里怎么解决链上数据爆炸导致的查询慢”,答不上来?别慌,这不仅是性能优化问题,更是架构思维的试金石。很多后端开发在转型区块链时,习惯用中心化数据库的思路去理解分布式账本,…

2026/9/22 18:36:21

WinSW 贡献指南:环境准备、源码构建与测试验证全流程

WinSW 贡献指南:环境准备、源码构建与测试验证全流程 【免费下载链接】winsw A wrapper executable that can run any executable as a Windows service, in a permissive license. 项目地址: https://gitcode.com/gh_mirrors/wi/winsw WinSW(Win…

2026/9/22 18:36:21

3个案例讲透什么叫做互质数,新手避坑指南

3个案例讲透什么叫做互质数,新手避坑指南 面试被问原理答不上来,这种尴尬谁没经历过?我见过太多人背了一堆概念,遇到“什么叫做互质数”这种基础问题,脑子瞬间一片空白。别慌,今天咱们不整虚的,直接拆解底层逻辑,帮你把这块硬骨头啃下来,这也是新手…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/22 0:04:49

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点 官方文档几百页翻到头还是懵?面试问到 输电线路在线监测 的数据链路时,脑子一片空白?别慌,这种 高频面试题 我整理了10年,专门治各种“文档太长抓不住重点”的毛病。…

2026/9/22 0:04:49

中介房源管理系统重构避坑:3个关键步骤搞定API变更

中介房源管理系统重构避坑:3个关键步骤搞定API变更 版本升级后 API 全变了,这种痛只有真做过的人懂。 很多团队在接手老旧房产项目时,最崩溃的不是代码烂,而是底层框架升级后,原本熟悉的接口调用方式彻底失效。 这份 保姆级教程…

2026/9/22 0:04:49

3个坑点带你一文搞懂55gg小游戏源码

3个坑点带你一文搞懂55gg小游戏源码 盯着控制台满屏的红色报错,看着那一长串 StackTrace ,是不是脑子瞬间宕机?别急,这种时候最忌讳的就是盲目改代码。很多刚入行的前端同学,面对 55gg 小游戏这类轻量级 H5…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码