超实用,百行Python代码制作动态树地图

matplotlib【7】--树地图 用可视化的方法来表达离散变量的数值情况,不仅仅可以使用条形图、饼图、热力图,我们还可以借助于树地图来完成。树地图的思想就是通过方块的面积来表示,面积越大,其代表的值就越大,反之亦然。 在Python中,可以借助于squarify包来绘制,即squarify.plot函数。首先,我们来看一下这个函数的语法及参数含义: squarify.plot(sizes, norm_x=... 阅读详情

今日表情???? 

树地图(tree map)是一种适用于显示大量分层结构的数据,它是饼状图的一种高维度替代者,可以用面积直观显示各个部分的占比。

先上图片:

再上视频:

最后上代码:

import numpy as np 
import pandas as pd 
from matplotlib import pyplot as plt
import matplotlib.animation as  animation 

import imageio
import os 
import cv2
from PIL import Image
import squarify


cmap = [
'#2E91E5',
'#1CA71C',
'#DA16FF',
'#B68100',
'#EB663B',
'#00A08B',
'#FC0080',
'#6C7C32',
'#862A16',
'#620042',
'#DA60CA',
'#0D2A63']*100

plt.rcParams['animation.writer'] = 'html'
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

def html_to_gif(html_file, gif_file, duration=0.1):
    path = html_file.replace(".html","_frames")
    images = [os.path.join(path,x) for x in sorted(os.listdir(path))]
    frames = [imageio.imread(x) for x in images]
    imageio.mimsave(gif_file, frames, 'gif', duration=duration)
    return gif_file


df = pd.read_csv('./data/gdp_china_1993_2019.csv')
df["date"] = [str(x) for x in df["date"]]
df = df.set_index("date")
df.columns = [x if "自治区" not in x else x[0:2] for x in df.columns]
df = df.sort_values("2019",axis = 1,ascending=False)

figsize = (8,6)
dpi = 160
title = "中国大陆各省份历年GDP"
n_visible = 31 

def treemap_dance(df,filename = None,
    title = "中国大陆各省份历年GDP",figsize = (8,6),dpi = 120,duration = 2,n_visible= 31):
    
    assert filename is None or filename.endswith(".html"), "filename should like *.html!"
    
    fig,ax = plt.subplots(figsize=figsize,dpi=dpi)
    

    # 调整spines
    ax.spines["top"].set_visible(False)
    ax.spines["right"].set_visible(False)
    ax.spines["left"].set_visible(False)
    ax.spines["bottom"].set_visible(False)

    def plot_frame(i):
        
        ax.clear() 
        date = df.index[i]
        dfdata = pd.DataFrame(df.loc[date,:])
        dfdata.columns = ["values"]
        dfdata["color"] = [cmap[i] for i in range(len(dfdata))] 
        dfdata = dfdata.sort_values("values",ascending = True) 

        dfused = dfdata.iloc[n_visible::-1,:] 
        xdata = dfused.index.tolist()
        ydata = dfused["values"].tolist()
        colors = dfused["color"].tolist()

        #plt.rc('font', size=7,color = "white")
        squarify.plot(sizes = ydata, # 指定绘图数据
             label = xdata, # 指定标签
             color = colors, # 指定自定义颜色
             alpha = 0.5, # 指定透明度
             value = ydata, # 添加数值标签
             edgecolor = 'white', # 设置边界框为白色
             linewidth =3, # 设置边框宽度为3
             ax = ax,
             text_kwargs = {"size":8,"color":"black"},
             zorder = 0
        )

        #辅助设置
        ax.set_title(title,color = "black",fontsize = 12)
        ax.text(0.08, 0.92, str(date), va="center", ha="center",
                alpha=1.0, color ="white", size = 20,transform = ax.transAxes)
        plt.axis('off')
        plt.tick_params(top = 'off', right = 'off')
        

    my_animation = animation.FuncAnimation(fig,plot_frame,frames = range(0,len(df)),interval = int(duration*1000))
    if filename is None:
        try:
            from IPython.display import HTML
            HTML(my_animation.to_jshtml())
            return HTML(my_animation.to_jshtml())
        except ImportError:
            pass
    else:
        my_animation.save(filename)
        return filename

treemap_dance(df)

html_file = "treemap_dance.html"
gif_file = "treemap_dance.gif"
treemap_dance(df, filename = html_file)

html_to_gif(html_file,gif_file,duration=1.0)

主要原理是安装并使用了squarify 库来绘制树地图,并借助 matplotlib中的 animation制作动态图。

收工。????

公众号后台回复关键词:动态图。可以添加作者微信获取相关代码和数据集。

万水千山总是情,点个在看行不行。????

史上最详细四叉树地图不同技术应用和代码详解 四叉树地图是一种强大的空间索引结构,在机器人导航、计算机图形学、地理信息系统等领域有着广泛的应用。本文介绍了四叉树地图的基本概念、主要变体及其研究进展,重点讨论了X-Quad树在机器人领域的应用。通过示例代码,我们展示了如何使用X-Quad树表示环境地图、进行路径规划、碰撞检测和占据栅格地图构建。X-Quad树的自适应性、紧凑存储和快速查询等特点,使其成为机器人导航中的理想选择。 阅读详情

相关推荐

详解八叉树地图

个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-102.html 八叉树地图 八叉树地图(OctoMap)就是一种灵活的、压缩的、又能随时更新的地图。八叉树示意图如下: 一个大立方体不断地均匀分成八块,直到变成最小的方块为止。整个大方块可以看成是根节点,而最小的块可以看作是“叶子节...

陈建驱的博客 2万+

Unity3D独立游戏开发日记(一):动态生成树木

目前写的独立游戏是一个沙盒类型的游戏。游戏DEMO视频如下: 提到沙盒类型的游戏,就有人给出了这样的定义: 游戏世界离现实世界越近,自由度、随机度越高才叫沙盒游戏。所谓自由度,就是你在游戏里想干啥就干啥,想开车就开车,想走路就走路。想盖房子就盖房子,没有城管来找你麻烦。那么随机度,就是每天发生的事情不能一样,做的任务也不会就一条线路可走。 在我的沙盒游戏里,地形上的树木,...

a736893007的博客 736

YorkU_trees_2020:树木动态与生态的普查

YorkU_trees_2020 树木动力学和生态学普查

matplotlib绘制树形图之基本配置——万能模板案例

对于树形图的绘制,首先我们需要安装一个第三方库,才可以进行图像的绘制 !pip install squarify import pandas as pd import numpy as np import squarify import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #显示中文 plt.rcParams['axes.unicode_minus']=False #正常显示负号

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 2421

解决usbisp不识别无法烧录Atmega328P,Arduino不识别问题

如果使用Arduino IDE里面的烧录,可能会遇到一个问题,就是不识别国产这种廉价的USBISP 点击烧录引导程序,会遭遇到找不到USB设备的问题,选哪个都会提示找不到,比如选择USBasp could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp' 因此,我们需要使用到progisp这一个软件的1.72版本 选择好芯片的型号后,调用编译好的HEX文...

arenascat的博客 7441

HX720数据采集实战:从硬件连接到姿态解析(含避坑指南)

本文详细介绍了HX720高精度ADC芯片在数据采集与姿态解析项目中的实战应用。内容涵盖从硬件电路设计、驱动源码编写与优化,到原始数据处理、校准以及最终姿态角度计算的完整流程,并提供了关键的避坑指南和调试技巧,帮助开发者高效完成从传感器信号到可用姿态数据的转换。

i8j9k0l1的博客 488

python Matplotlib库绘制常用图表(超全)

一、绘制圆环图 import numpy as np import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出...

蔡政洁的博客 4376

别再死记硬背了!用‘瞬时极性法’5分钟搞定三极管反馈电路类型判断

本文介绍了使用‘瞬时极性法’快速判断三极管反馈电路类型的高效技巧。通过假设输入信号变化并追踪传递路径,该方法能准确区分正负反馈、电压电流反馈、串联并联反馈及交直流反馈,避免传统死记硬背的弊端,显著提升电路分析效率。

weixin_42524708的博客 186

从零开始学Python【19】--matplotlib(树地图)

Python可视化往期回顾从零开始学Python【18】--matplotlib(热力图)从零开始学Python【17】--matplotlib(面积图)从零开始学Pyt...

lsxxx2011的专栏 1557

从工具选型到落地实践:吃透 SAP Fiori Launchpad 配置工具体系

摘要: SAP Fiori Launchpad配置远非简单添加应用和分配角色,涉及技术目录、业务目录、Spaces/Pages等多层管理。官方推荐新工具分工:技术目录用FLPAM维护应用定义,业务目录用FLPCM编排应用组合,Spaces/Pages优化用户体验布局,而传统Groups模式已被标记弃用。这种分层治理模式(定义层-编排层-展示层)能有效解决传输混乱、升级兼容性问题,尤其适合大规模项目实施。关键在于区分技术配置与业务呈现,避免将所有功能堆砌在单一旧工具中。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 103

基于多模态融合的反无人机视觉跟踪算法研究

本研究提出了一种基于多模态融合的反无人机视觉跟踪算法,通过整合可见光、红外、深度等多种视觉信息源,提高了对无人机的跟踪精度和可靠性。设计并实现了多模态特征提取方法,针对不同模态图像的特点提取了有效的特征信息,为多模态融合提供了基础。研究了多种多模态融合策略,包括特征级融合、决策级融合和混合融合,并通过实验对比分析了它们的优缺点,确定了适合反无人机视觉跟踪的融合方法。选择并改进了跟踪算法,将多模态融合信息融入到跟踪过程中,提高了算法对复杂环境和无人机运动变化的适应性。

AI的内部世界的博客 1354

【Reading Notes】(4)Favorite Articles from 2021

其实波尔象限与巴斯德象限,在具体科研实践时其实是一样的,就是「把问题的底层原理搞清楚」,只是问题的来源有所不同。美国普林斯顿大学的唐纳德 · 斯托克斯(Donald E. Stokes)通过 4 个象限定义了不同的研究类型,其中基础研究包括纯基础研究(波尔象限)与由应用驱动的基础研究(巴斯德象限)公式认为,任何重复的自然图案,都是通过两种具有特定特征的事物(如分子、细胞)进行相互作用而产生的。(左上)相机画面,(左下)时间轴,(中)AI捕捉的选手动作,(右)每种技术的「裁判员看点」

bryant_meng 391

Windows 11 安装 JDK 21:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 21 的完整流程,包括从 Oracle 官网下载压缩包、解压至自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章推荐使用 ZIP 压缩包而非安装程序,以实现绿色便携、多版本共存等优势,并通过一个包含 Java 21 新特性的示例程序进行功能验证,适合开发者快速上手。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2523

【视觉SLAM:八叉树地图(Octree Map)概述】

八叉树地图是一种高效的三维空间表示方法,通过递归划分空间,可以高效存储稀疏的点云数据,并提供快速查询能力。它在SLAM、机器人导航、三维重建等领域有广泛的应用。未来的研究方向可能包括更高效的内存管理、更复杂的动态更新机制以及更适应实时应用的多分辨率表达技术。

计算机领域博客,与时俱进的思想与技术。 1951

通过 MATLAB/Simulink + Simscape Battery,构建了锂电池老化模型与容量衰减仿真系统

本文基于MATLAB/Simulink平台,构建锂电池老化模型与容量衰减仿真系统,研究储能电池健康管理技术。通过搭建电化学-老化耦合模型,模拟循环和日历老化机制,分析温度、充放电倍率、DOD等因素对电池寿命的影响。系统实现了SOH在线估计和RUL预测功能,仿真了标准日历老化、高倍率循环和峰谷套利等典型工况下的电池衰减行为。结果表明:高温和深充放会显著加速电池老化,而精准的SOH管理可提升储能系统经济性30%以上。文章还探讨了数字孪生、机器学习等高级优化方向,为储能系统长周期运营提供技术支撑。

xiaoheshang_123的博客 400

【深度学习基础】多任务学习(Multi-Task Learning)

多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解成理论上独立的子问题,然后分别对每个子问题进行学习,最后通过对子问题学习结果的组合建立复杂问题的数学模型。多任务学习是一种联合学习,多个任务并行学习,结果相互影响。一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。

十二月的猫 1万+

matplotlib绘制多叉树树形图

实现了多叉树的可视化

qq_21119609的博客 1638

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Tableau自学四部曲_Part3:基础图表制作

Tableau基础图表制作

毛媛媛 873

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

八叉树地图的原理与实现

八叉树地图适合做大地图的建模,因为地图较大的情况下,体素图会占据大量的空间,不利于存储,因此八叉树地图适合做全局地图建模,用于做全局规划。体素图因为数据结构简单,建模速度快,因此适合做局部小地图的建模,用于局部规划,做动态避障。也就是说,在一定大小的三维空间内,

龙猫的博客 1141

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

26.27.28.29.极区图(南丁格尔玫瑰图)、维恩图 (Venn diagram)、面状图(Area chart)、树地图

26.极区图(南丁格尔玫瑰图) 27.维恩图 (Venn diagram) 28.面状图(Area chart) 29.树地图 26.极区图(南丁格尔玫瑰图) 极区图(又名南丁格尔玫瑰图)呈放射延伸状,每块会占一定的角度。其半径大小表示它代表的某一类数据的大小。其角度大小表示它所占总类别的比例。 南丁格尔玫瑰图,是由南丁格尔发明的,她是英国护士和统计学家。其在英国军营工作时收集了在克里米亚战争时期的士兵在不同月份的死亡率和原因分布,通过玫瑰图的方式有效的打动了当时的高层管理人员,于是医疗改良的提案才受到了大

涂作权的博客 4347

玩转Matplotlib数据绘图库

Matplotlib是Python语言的一个扩展程序库,用于数据绘图。它可与 NumPy, SciPy一起使用,提供了一种有效的 Matlab 开源替代方案。   课程特点:   (1)课程采用Jupyter Notebook讲解,图文并茂,讲述与代码对应。其文件将分享给学员,可作为交互式电子书使用。   (2)课程案例丰富,每个知识点均有代码示例说明。   (3)课程内容全面系统,涵盖了Matplotlib的基础绘图和高级绘图方法,包括:plot函数、定制绘图(设置轴标签、轴范围、线形风格、着色、spines、刻度),添加图例、标题、标注、网格线,中文字体显示、高质量矢量图输出、面向对象API绘图、多子图(subplot和gridspec)、数据可视化图形(条形图、饼图、散点图、直方图、等高线图、盒须图、棉棒图、3D绘图、矩阵可视化),图像显示等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解且能娴熟使用。希望本课程能帮助大家玩转Matplotlib! 另外,需要学习Numpy计算库的学员请前往《玩转Numpy计算库》https://edu.youkuaiyun.com/lecturer/board/28656

一行 Python 代码轻松构建树状热力图

今天和大家一起学习一种可视化技术:构建树状热力图treemap。树形图易于可视化,且易于被人理解。树状图通过展示不同大小的矩形,以传达不同大小的数据量,一般认为,较大的矩形意味着占总体的一大部分,而较小的矩形意味着整体的一小部分。在本文中,云朵君将和大家一起学习如何使用Squarify库在 Python 中构建树形图。介绍树状图使用嵌套在一起的不同大小的矩形来可视化分层数...

张俊红的个人博客 924

Python:绘制动态地图-pyecharts

全文阅读:Python:绘制动态地图-pyecharts| 连享会主页 目录 1. 简介 2. pyecharts 库介绍 2.1 pyecharts 库的安装 2.2 pyecharts 库配置一览 3. 案例操作 4. 参考资料 5. 相关推文 Data to Drag 1. 简介 许多软件可以绘制精美的图表,例如 Stata 、ACGIS、Excel 等等,但这些软件呈现的图表大都以静态为主。在本文中,我们将介绍百度的 Python 开源画图工具——pyecharts,

Stata连享会 1439

jupyter notebook(python)使用pycharts库实现动态地图展示

jupyter notebook(python)使用pycharts库实现动态地图展示

m0_54188335的博客 6305

Python-玩转数据-动态地图

一、为什么需要动态地图 动态地图是反映自然和人文现象变迁和运动的地图, 可以根据时间或地域的变化展现出某件事情的发展规律,pyecharts画出动态地图。 二、导入数据(虚拟数据) import pyecharts.options as opts from pyecharts.globals import ThemeType from pyecharts.commons.utils import JsCode from pyecharts.charts import Timeline,Map data =

s_unbo的博客 894

python 画动态地图_Python 如何画出漂亮的地图?

更新:发一个招实习生广告:我们实验室常年招合作学生,需要AI/ML/DL/IoT方向,可远程工作,有导师带领参与项目及论文合作(ps: 我导师超级温柔nice细心严谨靠谱,前几日带合作学生写的paper刚被顶会接收)。有意者请发送简历至邮箱wei.shao@rmit.edu.au,具体信息见我主页最新一条想法。(有啥疑问也可以直接私信我 :D)=======原答案分界线======推荐一个超好用的...

weixin_33303537的博客 1075
上一篇: 超动感,百行Python代码制作动态气泡图
下一篇: 用Python制作短视频之动态散点图
算法美食屋
博客等级 码龄9年 2万+粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值