Seaborn数据可视化实战:Seaborn图表定制与数据可视化入门

高级图表定制

学习目标

通过本课程你将掌握如何使用Seaborn库进行高级图表定制,包括图表的标题、图例、注释的添加,以及图表布局和大小的调整。这些技能将帮助你更有效地展示数据,使你的数据故事更加生动和有说服力。

相关知识点

  • Seaborn高级图表定制

学习内容

1 Seaborn高级图表定制

高级图表定制是一种将数据可视化提升到更高艺术与功能层次的创作过程。它不仅仅是简单地将数据转化为图形,而是通过精心设计的色彩搭配、独特的图形样式、巧妙的布局安排以及交互功能的融入,使图表能够精准传达复杂信息的同时,还能吸引观众的注意力并激发他们对数据背后故事的探索欲望。这种定制可以根据不同的应用场景和受众需求,打造出从简洁优雅到复杂华丽、从静态展示到动态交互的多样化图表,让数据不再是枯燥的数字,而是变成了一幅幅富有表现力和感染力的视觉作品,帮助用户更直观、高效地理解和分析数据。

1.1 添加图表标题和注释

在数据可视化中,图表的标题和注释是传达信息的重要组成部分。一个好的标题可以立即吸引观众的注意力,而恰当的注释则可以帮助观众更好地理解图表中的数据点。Seaborn提供了简单的方法来添加这些元素,使你的图表更加专业和信息丰富。

理论知识

在Seaborn中,添加图表标题和注释主要通过matplotlib库的函数来实现,因为Seaborn是基于matplotlib构建的。matplotlib.pyplot模块提供了title()函数来设置图表的主标题,xlabel()ylabel()函数来设置X轴和Y轴的标签,而annotate()函数则用于在图表中添加注释。

  • 设置图表标题:使用plt.title()函数可以设置图表的主标题。你可以通过传递一个字符串作为参数来指定标题的文本。此外,还可以通过fontdict参数来调整标题的字体样式,如字体大小、颜色等。
  • 设置轴标签:使用plt.xlabel()plt.ylabel()函数可以设置X轴和Y轴的标签。这些函数同样接受一个字符串参数来指定标签文本,并且可以通过fontdict参数来调整标签的样式。
  • 添加注释:使用plt.annotate()函数可以在图表的特定位置添加注释。这个函数需要两个主要参数:注释的文本和注释的位置。此外,还可以通过xytext参数来指定注释文本的位置,以及通过arrowprops参数来添加指向注释位置的箭头。

实践代码

下面的代码示例展示了如何使用Seaborn和matplotlib来创建一个带有标题、轴标签和注释的图表。

%pip install seaborn

从obs桶中获取数据

!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/c933252e2fa211f087ecfa163edcddae/tips.zip
!unzip tips.zip
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd# 替换为你的本地文件路径
tips = pd.read_csv('tips.csv')# 创建图表
sns.scatterplot(x="total_bill", y="tip", data=tips)# 设置图表标题
plt.title("Total Bill vs. Tip", fontdict={'fontsize': 20, 'color': 'blue'})# 设置轴标签
plt.xlabel("Total Bill ($)", fontdict={'fontsize': 14, 'color': 'green'})
plt.ylabel("Tip ($)", fontdict={'fontsize': 14, 'color': 'green'})# 添加注释
plt.annotate('High Tip', xy=(50, 10), xytext=(60, 15),arrowprops=dict(facecolor='black', shrink=0.05))# 显示图表
plt.show()

在这里插入图片描述

1.2 调整图表布局和大小

调整图表的布局和大小是确保图表在不同显示环境中都能良好呈现的关键。Seaborn和matplotlib提供了多种方法来调整图表的大小和布局,包括设置图表的尺寸、调整子图之间的间距等。

理论知识

  • 设置图表大小:使用plt.figure()函数可以设置图表的大小。通过传递figsize参数,可以指定图表的宽度和高度(以英寸为单位)。例如,plt.figure(figsize=(10, 6))将创建一个宽度为10英寸、高度为6英寸的图表。
  • 调整子图间距:使用plt.subplots_adjust()函数可以调整子图之间的间距。这个函数接受多个参数,如leftrightbottomtopwspacehspace,分别用于调整图表的左右边距、上下边距以及子图之间的水平和垂直间距。
  • 保存图表:使用plt.savefig()函数可以将图表保存为文件。通过传递文件路径和文件格式(如'png''pdf'等),可以将图表保存为高质量的图像文件。

实践代码

下面的代码示例展示了如何调整图表的大小和布局,并将图表保存为文件。

import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据集
tips = pd.read_csv('tips.csv')# 设置图表大小
plt.figure(figsize=(10, 6))# 创建图表
sns.scatterplot(x="total_bill", y="tip", data=tips)# 调整子图间距
plt.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9, wspace=0.2, hspace=0.2)# 保存图表
plt.savefig("scatterplot.png")# 显示图表
plt.show()

在这里插入图片描述

1.3 自定义图例

图例是图表中用于解释不同数据系列或数据点的标记。Seaborn提供了多种方法来自定义图例,包括更改图例的位置、样式和内容,以使其更加符合你的需求。

理论知识

  • 更改图例位置:使用plt.legend()函数可以更改图例的位置。通过传递loc参数,可以指定图例在图表中的位置。例如,loc='upper right'将图例放置在图表的右上角。
  • 自定义图例内容:通过传递labels参数,可以自定义图例中的标签。这个参数接受一个字符串列表,每个字符串对应图例中的一个标签。
  • 调整图例样式:使用legend对象的set_title()方法可以设置图例的标题。通过传递一个字符串参数,可以指定图例标题的文本。此外,还可以通过prop参数来调整图例标题的字体样式。

实践代码

下面的代码示例展示了如何自定义图例的位置、内容和样式。

import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据集
tips = pd.read_csv('tips.csv')# 创建图表
sns.scatterplot(x="total_bill", y="tip", hue="day", data=tips)# 更改图例位置
plt.legend(loc='upper left')# 自定义图例内容
plt.legend(labels=['Thursday', 'Friday', 'Saturday', 'Sunday'])# 调整图例样式
legend = plt.legend()
legend.set_title('Day of the Week')
plt.setp(legend.get_title(), fontsize='12')# 显示图表
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94348.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nano命令使用方法

nano 是 Ubuntu 等 Linux 系统中常用的轻量级文本编辑器,轻量易用,特别适合适合快速编辑配置文件、脚本等。以下是其核心使用方法:一、基本操作:打开 / 创建文件bash# 打开已存在文件(若文件不存在则创建) …

C#_gRPC

6.3 gRPC:高性能跨语言服务间通信 gRPC是一个高性能、开源、通用的RPC(Remote Procedure Call)框架,由Google开发并基于其多年的内部使用经验(Stubby)。它现在是Cloud Native Computing Foundation&#xf…

Ubuntu 多版本 librealsense 与 realsense_ros 编译并兼容 L515 等设备

这篇博客用来记录如何在 Ubuntu 下编译多个版本的 librealsense 并使用 L515 和 D435i 等设备。核心在于 L515 这款设备已经停止维护,直接安装的方案不支持这个设备,只支持 D435i 等后期产品。如果想要同时使用新老的 realsense 产品,需要单独…

Java 泛型 T、E、K、V、?、S、U、V

目录 一、概述 二、为什么使用泛型 三、常见泛型类型参数的含义与用途 示例一:使用 T 定义泛型类 示例二:使用 E 表示集合元素 示例三:使用 K 和 V 表示键值对 示例四:使用 ? 通配符处理未知类型 四、通配符 ? 的扩展用…

1688拍立淘接口数据全面解析详细说明(item_search_img)

一、接口概述 1688拍立淘接口是阿里巴巴1688平台提供的基于图像识别的商品搜索服务,允许开发者通过上传商品图片来搜索平台上的同款或相似商品。该接口的主要功能是接收用户上传的图片(或图片的相关信息),并通过1688平台的图像识…

【Docker项目实战】使用Docker部署轻量级LetsMarkdown文本编辑器

【Docker项目实战】使用Docker部署轻量级Markdown文本编辑器一、LetsMarkdown介绍1.1 LetsMarkdown简介1.2 主要特点二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3检查docker compose 版本四、拉取容器镜像五…

Node.js自研ORM框架深度解析与实践

Node.js自研ORM框架深度解析与实践 前言 在现代Web开发中,对象关系映射(ORM)框架扮演着至关重要的角色。它们为开发者提供了一层抽象,使得数据库操作变得更加简单和直观。本文将深入解析一个基于Node.js和MySQL的自研ORM框架&…

汇总图片拖进ps中 photoshop同时打开几个文件夹

如果你有许多文件夹,你想选中一部分,然后把里面的图片全部拖进photoshop当中,但是文件夹又不能直接拖进去,那么你可以尝试使用一下这个工具,首先测试一下直接拖文件夹。选中你要处理的文件夹,直接拖进photo…

mysql 5.7 查询运行时间较长的sql

开发过程遇到sql 执行时间长,又取消不了的情况 可使用 kill query ID 杀死进程获取正在运行的sqlSELECT ID, -- 进程ID:MySQL服务器分配给每个连接的唯一标识符,用于区分不同的客户端连接USER, …

MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作

目录 一、MongoDB 基础准备 1. 官方资源获取 2. 安装步骤解析 二、MongoDB 核心指令详解 1. 数据库操作指令 2. 集合操作指令 3. 文档操作指令 查询文档 插入文档 修改文档 删除文档 三、进阶查询技巧 1. 运算符的灵活运用 比较运算符 逻辑运算符 范围与成员运算…

CVPR2025丨遥感领域,全模态与秒超高清遥感建模重大突破,性能提升创新点

关注gongzhonghao【CVPR顶会精选】刚入门遥感建模时,总好奇别人为什么总能提出新方法?慢慢摸索后才发现,创新点并不是硬憋出来的,而是要从数据特性、传感器差异、地物细节以及环境变化中发现机会。不同波段、不同分辨率、不同时相…

HTML5详篇

前端三剑客 前端三剑客是指HTML、CSS和JavaScript: HTML超文本标记语言(Hyper Text Markup Language):简单理解描述网页结构的;用于网页内容的语言。它通过使用不同的HTML标签来定义页面中的各种元素,例如标题、段落、图像、链接等【无羽毛的小鸟模型】 CSS层叠样式表(…

【Transient-Free 3DGS】delayed densification + coarse to fine增加GS的鲁棒性

25年最新连接去除场景瞬态对象工程与3DGS的pipeline,改进了spotlesssplats,已开源: [2506.02751] RobustSplat: Decoupling Densification and Dynamics for Transient-Free 3DGSAbstract page for arXiv paper 2506.02751: RobustSplat: De…

【MySQL】CRUD基础详解

CRUD基础前言:数据库的层级结构一、新增(Create)1. 单行数据 全列插入2. 单行数据的简写插入3. 指定列插入4. 多行数据插入二、查询(Retrieve)1. 全列查询2. 指定列查询3. 查询结果为表达式(1)…

互联网大厂Java求职面试实录:核心技术栈与业务场景解析

互联网大厂Java求职面试实录:核心技术栈与业务场景解析 面试场景设定 本文通过一个严肃的面试官和搞笑的水货程序员大面条之间的对话,模拟互联网大厂Java岗位的技术面试过程。面试涵盖Java SE、Spring生态、数据库、微服务、缓存、安全、消息队列、AI等多…

response对象的elapsed属性

在Python的requests库中,当我们发送一个请求后,会得到一个Response对象,这个对象有一个elapsed属性,它返回一个timedelta对象,表示从发送请求到收到响应所经过的时间。response.elapsed.total_seconds() 是 Python req…

【ansible】5.在受管主机部署文件和Jinja2模板

1.Ansible 中,如何用模块创建一个文件并设置权限644并设置SELinux类型,如何从受管主机中删除文件?使用ansible.builtin集合中的 file 模块,添加state:touch 创建文件,mode:‘0644’ 设置权限&am…

雪花算法数据库主键

雪花算法(Snowflake)作为一种分布式 ID 生成方案,在分布式系统中具有显著优势,能够解决多个关键问题。以下是它的核心好处及主要应用场景:雪花算法的核心好处全局唯一性:通过时间戳、机器 ID、数据中心 ID …

C/C++ 头文件命名约定

有的时候&#xff0c;在C的代码中&#xff0c;可以看到有如下的头文件引用的代码: #include <iostream> #include <unistd.h> #include <csignal>其中有一些是引用了.h文件&#xff0c;另外一些是引用了模块式的比如iostream和csignal&#xff0c;那么为什么…

异质结3.0时代的降本提效革命:捷造科技设备技术创新与产业拐点分析

光伏产业经历了从PERC到TOPCon和异质结&#xff08;HJT&#xff09;的技术迭代&#xff0c;而2025年将成为异质结技术规模化应用的关键转折点。捷造科技通过一系列突破性技术创新&#xff0c;将GW级异质结整线设备价格降至2亿元&#xff0c;较行业平均水平降低约40%&#xff0c…