news 2026/5/26 5:38:14

利用气泡图探索二氧化碳排放与气候变化脆弱性的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
利用气泡图探索二氧化碳排放与气候变化脆弱性的关系

利用气泡图探索二氧化碳排放与气候变化脆弱性的关系

importmatplotlib.pyplotaspltimportpandasaspd

数据探索

以下数据如果有需要的同学可关注公众号HsuHeinrich,回复【数据可视化】自动获取~

url="https://raw.githubusercontent.com/holtzy/the-python-graph-gallery/master/static/data/data-CO2.csv"df=pd.read_csv(url)df.head()

Name:国家地区

:x轴位置

:y轴位置

CO2 per Capita:人均二氧化碳排放量

Color:颜色

绘制基本气泡图

# 初始化fig,ax=plt.subplots(figsize=(6,6))# 绘制散点图ax.scatter(df[' '],# x位置df[' .1'],# y位置s=df['CO2 per Capita']*10,# 气泡大小)# 标题ax.set_title('The countries with the highest vulnerability to climate change\nhave the lowest CO2 emissions',weight='bold')ax.set_xlabel('Vulnerability')ax.set_ylabel('Readiness')plt.show()

自定义颜色和布局

# 初始化fig,ax=plt.subplots(figsize=(6,6))# 绘制散点图ax.scatter(df[' '],# x位置df[' .1'],# y位置s=df['CO2 per Capita']*10,# 气泡大小c=df['Color'],# 颜色)# 标题ax.set_title('The countries with the highest vulnerability to climate change\nhave the lowest CO2 emissions',weight='bold')ax.set_xlabel('Vulnerability')ax.set_ylabel('Readiness',rotation=0,# 水平方向)# 移除边框和轴ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)ax.set_xticklabels([])ax.set_yticklabels([])ax.tick_params(axis='both',which='both',length=0)plt.show()

更新标记并添加参考线

# 初始化fig,ax=plt.subplots(figsize=(6,6))# 绘制散点图ax.scatter(df[' '],# x位置df[' .1'],# y位置s=df['CO2 per Capita']*10,# 气泡大小c=df['Color'],# 颜色marker='s')# 标题ax.set_title('The countries with the highest vulnerability to climate change\nhave the lowest CO2 emissions',weight='bold')# 添加参考线ax.axvline(0.43,color='gray',linestyle='--',linewidth=0.7,alpha=0.4)ax.axhline(0.41,color='gray',linestyle='--',linewidth=0.7,alpha=0.4)# 移除边框和轴ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)ax.set_xticklabels([])ax.set_yticklabels([])ax.tick_params(axis='both',which='both',length=0)plt.show()

突出注释部分国家地区

defcircle_countries(country_names:list):''' 输出包含该国家地区的边框 '''# 将边缘颜色参数初始化为默认值:与字体颜色相同df['EdgeColor']=df['Color']# 更改指定国家的边缘颜色df.loc[df['Name'].isin(country_names),'EdgeColor']='black'returndf['EdgeColor']defadd_country_name(country_names:list):''' 在标记顶部添加国家地区名称 '''# 迭代每个国家地区forcountry_nameincountry_names:# 查找国家地区在轴上的位置x_axis=df.loc[df['Name']==country_name,' ']y_axis=df.loc[df['Name']==country_name,' .1']# 预防报警,采取警告中建议的方式处理x_axis_value=float(x_axis.iloc[0])y_axis_value=float(y_axis.iloc[0])# 将文本添加到正确的位置,稍微移动到顶部以方便阅读ax.text(x_axis_value,y_axis_value+0.025,# 位置country_name,# 标签size=6,# 文本大小ha='center',# 居中对齐)
# 初始化fig,ax=plt.subplots(figsize=(6,6))# 需要突出的国家地区列表country_to_circle=['Norway','Singapore','U.S.','Czech Republic','Qatar','Bahrain','Somalia','Sudan','India','Trinidad and Tobago','Chad']# Define the edgecolors according to the listedgecolors=circle_countries(country_to_circle)# 绘制散点图ax.scatter(df[' '],# x位置df[' .1'],# y位置s=df['CO2 per Capita']*10,# 气泡大小c=df['Color'],# 颜色edgecolor=edgecolors,linewidths=0.6,marker='s',zorder=2)# 添加国家地区名称add_country_name(country_to_circle)# 标题title='The countries with the highest vulnerability to climate change\nhave the lowest CO2 emissions'fig.text(0,0.97,# 相对位置title,fontsize=11,ha='left',family='dejavu sans',weight='bold')# 子标题subtitle='All countries sorted by their vulnerability and readiness to climate change. The size shows the CO2 emission\nper person in that country'fig.text(0,0.92,# 相对位置subtitle,fontsize=8,ha='left',family='dejavu sans',multialignment='left')# 添加参考线ax.axvline(0.43,color='gray',linestyle='--',linewidth=0.7,alpha=0.4)ax.axhline(0.41,color='gray',linestyle='--',linewidth=0.7,alpha=0.4)# 移除边框和轴ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)ax.set_xticklabels([])ax.set_yticklabels([])ax.tick_params(axis='both',which='both',length=0)# 添加文本注释标签fig.text(0.1,0.45,'High readiness',color='silver',size=8)fig.text(0.1,0.4,'Low readiness',color='silver',size=8)# 在上述注释标签周围添加箭头arrowprops=dict(arrowstyle="->",color='silver',lw=0.4)ax.annotate("",xy=(0.25,0.32),xytext=(0.25,0.37),arrowprops=arrowprops)ax.annotate("",xy=(0.25,0.5),xytext=(0.25,0.45),arrowprops=arrowprops)plt.show()

参考:Bubble plot with specific annotations and customization

共勉~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 9:32:10

【Docker MCP 网关服务注册全解析】:掌握微服务动态注册核心技术

第一章:Docker MCP 网关服务注册概述在微服务架构中,Docker MCP(Microservice Control Plane)网关承担着服务发现、路由转发与统一鉴权等核心职责。服务注册是其运行的前提,确保每个启动的微服务实例能够被正确识别并纳…

作者头像 李华
网站建设 2026/5/25 5:17:46

SpringBoot新手入门:从0到1快速搭建Web应用

一、为什么 Spring Boot 是新手的「Java 开发加速器」? 想象开发 Java Web 应用像组装家具: 传统 Spring:需手动筛选板材(依赖)、阅读厚厚说明书(XML 配置)、自备工具(服务器&…

作者头像 李华
网站建设 2026/5/25 16:27:30

Docker Offload优先级配置揭秘:如何实现资源利用最大化?

第一章:Docker Offload优先级配置的核心概念Docker Offload机制允许将容器化工作负载从主执行路径卸载到专用处理单元(如GPU、FPGA或协处理器),以提升系统性能与资源利用率。在复杂的多任务环境中,合理配置Offload优先…

作者头像 李华
网站建设 2026/5/25 18:41:02

多模态Agent Docker启动顺序深度解析(专家级部署方案曝光)

第一章:多模态Agent架构与Docker化挑战构建现代AI系统时,多模态Agent因其能够融合文本、图像、音频等多种数据类型而备受关注。这类Agent通常由多个异构组件构成,包括感知模块、推理引擎、动作生成器以及外部接口服务。将此类复杂架构容器化部…

作者头像 李华
网站建设 2026/5/24 13:51:30

智能驾驶研究:飞机座舱人机交互对飞行员情景意识的影响

研究背景随着科技的发展,航空航天飞机驾驶座舱逐渐向智能化方向发展。HUD(平视显示器,Head Up Display)的使用可以使飞行员在平视情况下,对飞机飞行的各种状态信息进行集成呈现的透明显示器。HUD投射的资料主要与飞行任务有重要关系&#xff…

作者头像 李华