当前位置: 首页 > news >正文

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

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

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

共勉~

http://www.cnnetsun.cn/news/90009.html

相关文章:

  • 为什么90%的生物信息分析师都在用R做RNA结构研究?真相令人震惊
  • 【稀缺资源】Dify + Tesseract 5.3多语言支持实现路径首次公开
  • 还在手动写Dify用例?Agent驱动自动化测试已成主流!
  • RSA 加密体制及其安全性分析
  • 【视频帧提取效率翻倍秘籍】:Dify帧率设置背后的黄金参数揭秘
  • 在C#上运行YOLOv11模型---CPU版
  • 关于uniapp vue2 canvas重绘元素节点时,提示cos of null相关异常警告,导致js线程崩溃,vue响应式丢失的问题
  • 【微服务稳定性提升利器】:基于Dify与Spring AI的异常熔断与恢复策略
  • concurrent hashmap原理,扩容,扩容时怎么保证线程安全?
  • 空间转录组降维必杀技:5步用R语言完成PCA、t-SNE与UMAP优化
  • 【R语言与量子计算加速新突破】:GPU如何将量子模拟效率提升10倍?
  • AWS专家Greg Coquillo提出的 6种LLM ORCHESTRATION PATTERNS解析
  • “.商标”不等同于商标权:企业做知识产权保护,别把“后缀名”当“确权证”
  • 面向削峰填谷的电动汽车多目标优化调度策略
  • 如何在30分钟内完成Dify与Spring AI的无缝部署?资深架构师亲授秘诀
  • 【Vue知识点总结】Vue中的namespaced命名空间详解
  • 告别单一生态限制,构建R-Python一体化可视化工作流
  • 论基于REST服务的Web应用系统设计
  • R语言在气象数据分析中的应用(相关性建模全攻略)
  • 揭秘Docker Compose中的Agent健康检测机制:如何避免服务假死?
  • Python期末复习:30个核心知识点完全详解
  • 大模型训练数据全攻略:从数据处理到高质量数据集构建(建议收藏)
  • 企业级容器安全迫在眉睫,Docker Scout如何实现小时级响应?
  • 12th Live2D Creative Awards(2025)获奖名单公布!
  • 【稀缺资料】:Dify重排序系统调优的3个黄金法则与实测数据验证
  • 【混合检索的Dify查询优化秘籍】:揭秘提升查询效率5倍的核心策略
  • 告别 “自动化孤岛”,解锁实验室真正智能
  • Dify版本历史管理的秘密武器:实现安全、可控、可追溯的回滚体系
  • 13.长视频和短视频的目标追踪(yolo_insightface模型)
  • 前端开发必备:JavaScript 核心事件详解与实战