超动感,百行Python代码制作动态气泡图

python绘制气泡图 气泡图是一种多变量图表,是散点图的变体,也可以认为是散点图和百分比区域图的组合。气泡图与散点图相似,不同之处在于,气泡图允许在图表中额外加入一个表示大小的变量。实际上,这就像以二维方式绘制包含三个变量的图表一样。气泡由大小不同的标记(指示相对重要程度)表示。 阅读详情

先上图片:

 

再上视频:

最后上代码:

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


plt.rcParams['animation.writer'] = 'html'
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

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

dfx = pd.read_csv("./data/gdp_per_capita.csv")
dfx = dfx.set_index("year")
dfx.index = [str(x) for x in dfx.index]
dfx = dfx[sorted(dfx.columns)]

dfy = pd.read_csv("./data/life_expect.csv")
dfy = dfy.set_index("year")
dfy.index = [str(x) for x in dfy.index]
dfy = dfy[sorted(dfy.columns)]

dfz = pd.read_csv("./data/pop_amount.csv")
dfz = dfz.set_index("year")
dfz.index = [str(x) for x in dfz.index]
dfz = dfz[sorted(dfz.columns)]

def bubble_chart_race(dfx,dfy,dfz,title = "中国大陆各省市历年人均GDP和预期寿命变化",
                      filename = None,
                      figsize = (6.5,3.5),dpi = 144,
                      duration = 0.5,
                      xlabel = "人均GDP(人民币)",
                      ylabel = "预期寿命", 
                      size_label = "点尺寸: 人口数量",
                      anotate_points = ["江西省","北京市","上海市","广东省",
                                        "河南省","江苏省","黑龙江省","西藏自治区"]):

    fig,ax = plt.subplots(figsize=figsize,dpi=dpi)

    ax.set_facecolor("0.9")
    ax.set_title(title,color = "black",fontsize = 12)

    # 调整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(date):
        
        dfdata = pd.DataFrame() 
        xdata = dfx.loc[date,:].sort_index() 
        ydata = dfy.loc[date,:].sort_index()
        zdata = dfz.loc[date,:].sort_index()
        dfdata["x"] = xdata
        dfdata["y"] = ydata
        dfdata["z"] = zdata 

        # 绘制散点图像
        
        ax.clear()
        ax.scatter(dfdata["x"],dfdata["y"],s = 100*dfdata["z"]/dfdata["z"].mean(),
               c = (cmap*100)[0:len(dfdata)],alpha = 0.5)


        # 添加图例文字
        for i,p in enumerate(dfdata.index):
            px,py,pz = dfdata.loc[p,["x","y","z"]].tolist() 
            if p in anotate_points:
                ax.annotate(p,xy = (px,py),  xycoords = "data",
                    xytext = (-15,10),fontsize = 10,fontweight = "bold",color = cmap[i], textcoords = "offset points")

        ax.tick_params(bottom = False,left = False,labelsize = 8,direction = "in",length = 2)

        # 调整绘图范围
        xlim = (dfx.values.min(),dfx.values.max())
        ax.set_xlim(left = xlim[0]-(xlim[1]-xlim[0])/10,right = xlim[1]+(xlim[1]-xlim[0])/10)
        ylim = (dfy.values.min(),dfy.values.max())
        ax.set_ylim(bottom = ylim[0]-(ylim[1]-ylim[0])/10,top = ylim[1]+(ylim[1]-ylim[0])/5)


        # 添加辅助元素
        ax.text(0.5, 0.5, date, va="center", ha="center",alpha=0.3, size = 50,transform = ax.transAxes)
        ax.text(0.85, 0.92, size_label, ha="center",va="center", size = 10,transform = ax.transAxes)

        ax.grid(axis = "x",color="white",lw=1,ls = "-")
        ax.tick_params(bottom = False,left = False,labelsize = 8,direction = "in",length = 2)
        ax.set_xlabel(xlabel,fontsize = 10)
        ax.set_ylabel(ylabel,fontsize = 10)
    
    
    bubble_animation = animation.FuncAnimation(fig,plot_frame,frames = dfx.index ,interval = int(duration*1000))
    if filename is None:
        try:
            from IPython.display import HTML
            return HTML(bubble_animation.to_jshtml())
        except ImportError:
            pass
    else:
        bubble_animation.save(filename)
        return filename


html_file = "bubble_chart_race.html"
gif_file = html_file.replace(".html",".gif")
bubble_chart_race(dfx,dfy,dfz,filename = html_file,title = "中国大陆各省份历年人均GDP和预期寿命")

html_to_gif(html_file,gif_file,duration=1.0)

主要思路是构建plot_frame函数逐帧绘制图像,再用matplotlib的animation模块制作动画。

收工。????

打码不易,喜欢本篇的小伙伴,或者需要完整代码和绘图数据集的同学,可以对本文点赞,在看,和分享后在公众号“算法美食屋”后台回复关键字:动态图,添加作者微信获取。

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

 

Python、R绘制多彩气泡图 Python、R实现气泡图 在工作中面对这么一个问题,使用软件实现二维气泡图,需要在每个气泡加上标签等信息。搜了一圈,关于此类的文章较少,故写篇总结,和大家一起探讨使用。 这里从网上随便找到一个数据集进行制作。 实现的气泡图为 x轴为temperature,y轴为rainfall,气泡大小为yield。 Python实现气泡图 下面展示实现的python代码。 import pandas as pd import numpy as np import matplotlib as mpl from matp 阅读详情

相关推荐

用Python绘制专业气泡图:逐行代码详解(学画图第一天)

本文将通过的方式,手把手教你用Python的Matplotlib库绘制商业级气泡图。每个代码块都包含详细的功能解析,即使零基础也能轻松掌握!

2401_84301183的博客 1549

python绘制Bubble气泡图pltscatter

float 或 array,维度为(n, ), 非必需。) 是标记的形状,具体可看matplotlib官方文档。如果没有,则使用颜色数组的相应最小值和最大值。) 颜色条,可以用colormap,参考官方文档。float或 array 维度为(n, )**c **array或list,映射颜色。0 (完全透明) and 1 (不透明).与默认规范一起使用,以将颜色数组。如果为“真”,则使用。.缩放颜色的选项,一般不用。不能与norm同用。

wlh2067的博客 3302

使用Pyecharts绘制多种炫酷气泡图

综上所述,Pyecharts库提供了丰富的参数和功能,使我们能够轻松绘制多种炫酷的气泡图。本文介绍了基本的气泡图绘制方法,并提供了示例代码,同时还介绍了一些常用的参数说明。气泡图是一种常用的数据可视化方式,它通过在坐标系上绘制不同大小和颜色的气泡来展示数据的分布和关联性。本文将介绍Pyecharts库中用于绘制气泡图的参数说明,并提供相应的源代码示例。除了基本的气泡图外,Pyecharts还提供了许多其他参数和功能,用于绘制不同类型和样式的气泡图。类设置气泡上的标签为气泡的名称,并位于顶部。

WELL_CODER的博客 957

数据可视化——用python绘制气泡图、三维散点图、多重柱形图案例

气泡图可以很直观的展示三个变量之间的关系 ,只不过它的其中一条变量的表现形式是体现在气泡的大小上,这也是它和三维散点图的一个小区别。如果一个数据集中包含非常多的点,那么散点图可以将这些数据对比的结果一目了然,是比较适用的。而多组柱形图也叫作簇状柱形图,它也是用来展现某个分类下多个数据的对比。

m0_72642657的博客 7507

python如何绘制气泡图

在上述代码中,首先导入了matplotlib.pyplot模块,并导入numpy用于生成随机数据。然后,使用np.random.rand()生成了50个随机的x坐标、y坐标、气泡大小和颜色。接下来,使用plt.scatter()函数创建气泡图,指定x和y坐标,气泡的大小和颜色。通过调整s参数和c参数可以控制气泡的大小和颜色。在这个例子中,使用cmap参数将颜色映射设置为coolwarm,使得气泡的颜色从红色到蓝色渐变。在这个例子中,使用plt.text()函数为每个气泡添加了一个标签,显示其对应的坐标。

zhangzhechun的专栏 1503

Python绘制气泡图示例

Python绘制气泡图示例

weixin_43263566的博客 1588

关系(四)利用python绘制气泡图

利用python绘制气泡图

微信知乎搜索HsuHeinrich 3305

Python 绘图入门:使用Matplotlib绘制气泡图

通过适当的设计和优化,气泡图不仅能够有效传达复杂的信息,还能让数据分析的结果更加直观和生动。在实际应用中,我们可以结合具体的业务场景,利用气泡图来展示和分析数据,从而做出更好的决策。气泡图是散点图的一种扩展,通过气泡的大小来表示第三个维度的数据。每个气泡的 x 轴和 y 轴位置表示两个维度的数据,气泡的大小则表示第三个维度。我们可以使用气泡图来可视化这些数据,分析产品的表现。绘制气泡图时,除了基本的 x、y 轴和气泡大小之外,还可以通过调整颜色、标签和注释等,使图表更加美观和信息丰富。可以通过调整透明度(

qq_39889473的博客 1655

25个常用Matplotlib图的Python代码(一):散点图、气泡图、带线性回归最佳拟合线的散点图、抖动图、计数图

通常,多个数据点具有完全相同的X和Y值。结果,多个点相互绘制并隐藏。为避免这种情况,请稍微抖动点,以便您可以直观地看到它们。Scatteplot是用于研究两个变量之间关系的经典和基本图。如果数据中有多个组,则可能需要以不同颜色可视化每个组。边界内显示一组点以强调其重要性。在此示例中,您将从应该被环绕的数据帧中获取记录,并将其传递给下面的代码中描述的记录。两个变量如何相互改变。下面显示了数据中各组之间最佳拟合线的差异。

Angelina_Jolie的博客 1816

STM32基于软件模拟IIC进行AHT21B温湿度采集

通过学习软件IIC来进行实操AHT21B采集温湿度。

Liu-FE的博客 3700

原创_新魔百和CM201-1鸿蒙架构当贝乐家语音安卓9线刷固件包刷机教程可救砖rom刷机包

不用担心变砖,因为系统内核会自动判断分区及CPU等级,假设你CPU是高于S905L3的那么。7.adb功能支持,系统增加开机自启功能,添加老人桌面模式,默认为年轻化桌面;所以我发的这个固件可适用于_cw_ys_zg_zn代工上生产的盒子进行刷机;5.CPU及GPU算法更改,当观看4K片源时,AI智能会自动优化系统后台进程,正如我所说,本固件是采用安卓公版镜像制作而成,那么代工厂也是使用的公版镜像,1.移植鸿蒙架构代码,完美融合安卓系统,增加系统的稳定性;刷机的时候 他会自动短接链接,所以不存在变砖。

a138088150的博客 1万+

Python数据可视化(二)(matplotlib)

分享一些python-matplotlib作图小技巧,用于汇报展示。

cqx2020的博客 461

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 285

(代码详解)绘制气泡图+详细讲解图例设置+如何正确理解气泡图+气泡大小、颜色+调参

(代码详解)绘制气泡图+详细讲解图例设置+如何正确理解气泡图+气泡大小、颜色+调参

2301_81199775的博客 1万+

基于YOLOv11的农作物病虫害检测系统设计与实现

我们使用公开的IP102病虫害数据集作为基础,该数据集包含102种病虫害类别,覆盖水稻、小麦、玉米等多种主要农作物。图像数量:75,222张类别数:102图像分辨率:从640×480到4000×3000不等标注格式:PASCAL VOC格式此外,我们还收集了部分田间实际拍摄的图像以增强模型泛化能力。

YOLO 596

innovus:如何在init design之后新增参考库(lib/lef)

如题,在PR过程中经常会遇到这种问题,时序无法收敛,需要新增一套lvt或者hpc的库,怎么办?

m0_61544122的博客 5015

python绘制气泡图|随机生成数据

【代码】python绘制气泡图|随机生成数据。 1. 首先生成了 100 个元素的随机数据 x、y 和 z,其中 x 表示横坐标,y 表示纵坐标,z 表示气泡大小和颜色所对应的值。 2. 使用scatter() 函数绘制气泡图。在这里设置了气泡大小为 z 值的 10 倍,颜色由 z 值确定,并使用 coolwarm 颜色映射。 3. 在 plt.subplots() 函数中设置了 figsize 和 dpi 参数,分别用于设置图形的大小和分辨率。 4. 通过修改 rcParams 属性,设置了坐标

群智能算法开发 1795

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7468

Pyecharts绘制多彩气泡图:从基础到高级定制

数据可视化是数据分析中不可或缺的一环,而Pyecharts作为一款基于Echarts的Python图表库,提供了丰富的图表类型,其中气泡图是一种常用于展示三维数据的炫酷图表。本文将介绍如何使用Pyecharts绘制多种炫酷气泡图,并对各种参数进行详细说明,帮助读者更好地理解和定制气泡图。

一键难忘的博客 6383

养龙虾之_因特尔UHD/ULtra/Arc核显跑大模型_安装ollama_跑qwen3.5:0.8b/9b_使用copaw1.0.1测试_并配置copaw技能效果炸裂---AI大模型应用探索0019

摘要:本文探讨了利用Intel UHD770核显运行大语言模型的可能性。通过使用Intel发布的ipex-llm项目工具包,成功在核显上运行了Qwen3.5系列模型。测试发现0.8B小模型运行流畅(3-5秒响应),但智能程度有限;而9B大模型虽然效果更好,但响应时间长达2分钟,且GPU/CPU占用率不高。实验证明Intel核显确实可以运行LLM,但实际效果和性能表现仍有提升空间,特别是对大模型的支持尚不理想。

添柴程序猿的专栏 239

多跳问答技术解析:从原理到金融领域实践

多跳问答(Multi-hop QA)是自然语言处理中的高级任务,要求系统通过多步推理整合分散信息来回答问题。其核心技术在于理解文档间的复杂关联,相比单跳问答需要更精细的数据集设计和模型架构。在金融、医疗等专业领域,多跳问答能有效处理如'腾讯大股东投资的港股上市公司'这类需要串联多个信息点的问题。典型实现方案包括MR-Search框架的三级检索器设计,分别处理实体召回、关系匹配和数值比较。当前最佳实践表明,结合稠密检索与稀疏检索的混合策略,配合动态路由机制,能在保持较高精度的同时控制计算成本。这类技术在金融风

weixin_42566072的博客 607

菊安酱与菜菜的Python机器学习可视化(week1 correlation - 01散点图 & 02气泡图)

文章目录第一期 关联图:01 散点图 & 02 气泡图博文非常优秀,但是同时.....**菊安酱和菜菜不希望看到这篇优秀文章被浪费掉!**在接下来的8周之内,我们将会带领你一起遍历50图,每周直播+完整版更新,不怕没人带没动力~!**00 安装库,配置环境**matplotlibseabornbrewer2mpl**菜菜所使用的版本**:**第一章 关联图 Correlation**我们什...

算法探索之路 5053

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Matplotlib炫酷气泡图:代码实战与参数解析

气泡图是一种展示数据分布、关联和趋势的强大工具。Matplotlib提供了灵活的绘图功能,允许我们创建各种类型的气泡图。在本文中,我们将深入探讨不同种类的炫酷气泡图,并为每种类型提供详细的参数说明和代码实战。

一键难忘的博客 4620

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据可视化之matplotlib实战:plt.scatter()函数 绘制气泡图

import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np # 防止乱码 mpl.rcParams["font.sans-serif"] = ["SimHei"] mpl.rcParams["axes.unicode_minus"] = False a = np.random.randn(100) b = np.random.randn(100) # colormap:RdYlBu plt.scatter(a,

超级大洋葱的博客 2626

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python可视化-气泡图

气泡图类似散点图,也是表示XY轴坐标之间的变化关系,也可以像彩色散点图给点上色。区别在于可以通过图中散点的大小来直观感受其所表示的数值大小。一、数据文件准备1、PeopleNumber.csvcity,people,price NJ ,823,3.19 XZ ,866,2.7 HA,487,2.51 YC,723,2.78 SQ,485,2.61 TZ,464,3.13 YZ,448,3.14 N...

Some. 2万+

【Python数据可视化】通过Python制作 “3D散点图“ 和 “气泡图“

今天分享为以上的全部内容,让更多的人了解如何用可视化制作图形,希望能都帮助到大家。

qq_65367204的博客 4384
上一篇: 超简单,百行Python代码制作动态条形图跳舞
下一篇: 超实用,百行Python代码制作动态树地图
算法美食屋
博客等级 码龄9年 2万+粉丝 154原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值