Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
一、Matplotlib
Matplotlib是Python中最基础也是最强大的数据可视化库之一。它提供了一整套绘图工具,可以创建各种类型的图表,如折线图、柱状图、散点图、饼图等。
1.1 Matplotlib基础
基本使用
Matplotlib的基本使用非常简单,只需要导入matplotlib.pyplot模块,然后使用其各种绘图函数即可。
import matplotlib.pyplot as plt# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('简单折线图')
plt.show()
设置图形属性
我们可以通过设置各种属性来定制图形的外观。
# 设置线条属性
plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('设置线条属性的折线图')
plt.show()
多图绘制
使用subplot函数可以在同一个窗口中绘制多个图形。
# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]# 创建子图
plt.subplot(2, 1, 1)
plt.plot(x, y1, 'r--')
plt.title('第一个子图')plt.subplot(2, 1, 2)
plt.plot(x, y2, 'g*-')
plt.title('第二个子图')plt.show()
1.2 Matplotlib高级
图例和标签
我们可以为图形添加图例和标签,以便更好地解释图表内容。
# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]# 绘制折线图
plt.plot(x, y1, label='质数')
plt.plot(x, y2, label='平方数')# 添加图例和标签
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('添加图例和标签的折线图')
plt.legend()
plt.show()
注释和文本
可以在图表中添加注释和文本,以便更详细地解释图表中的数据点。
# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('添加注释的折线图')# 添加注释
plt.annotate('最高点', xy=(5, 11), xytext=(4, 9),arrowprops=dict(facecolor='black', shrink=0.05))plt.show()
图表样式
Matplotlib提供了许多内置的样式,可以轻松更改图表的整体外观。
# 使用内置样式
plt.style.use('ggplot')# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('使用ggplot样式的折线图')
plt.show()
二、Seaborn
Seaborn是基于Matplotlib构建的高级数据可视化库,提供了更简洁的API和更美观的默认样式,特别适合用于统计数据的可视化。
2.1 Seaborn基础
安装和导入
安装Seaborn非常简单,可以使用pip命令:
pip install seaborn
导入Seaborn也非常简单:
import seaborn as sns
import matplotlib.pyplot as plt
基本使用
Seaborn的基本使用方法与Matplotlib类似,但提供了更简洁的接口和更美观的默认样式。
# 导入数据集
tips = sns.load_dataset('tips')# 绘制散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.xlabel('总账单')
plt.ylabel('小费')
plt.title('总账单与小费的关系')
plt.show()
绘制不同类型的图表
Seaborn提供了许多用于绘制不同类型图表的函数,如箱线图、柱状图、热力图等。
# 箱线图
sns.boxplot(x='day', y='total_bill', data=tips)
plt.xlabel('星期几')
plt.ylabel('总账单')
plt.title('不同星期几的总账单分布')
plt.show()# 热力图
flights = sns.load_dataset('flights')
flights_pivot = flights.pivot('month', 'year', 'passengers')
sns.heatmap(flights_pivot, annot=True, fmt='d', cmap='YlGnBu')
plt.xlabel('年份')
plt.ylabel('月份')
plt.title('不同年份和月份的乘客数量')
plt.show()
2.2 Seaborn高级
调整图表样式
Seaborn提供了一些函数可以调整图表的样式。
# 设置图表样式
sns.set_style('whitegrid')# 绘制散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.xlabel('总账单')
plt.ylabel('小费')
plt.title('总账单与小费的关系')
plt.show()
多图绘制
使用FacetGrid可以在同一个窗口中绘制多个图形,方便进行对比分析。
# 使用FacetGrid绘制多个图形
g = sns.FacetGrid(tips, col='time')
g.map(sns.scatterplot, 'total_bill', 'tip')
plt.show()
三、综合实例
下面是一个综合详细的例子,展示如何使用Matplotlib和Seaborn进行数据可视化。
3.1 示例数据集
我们将使用一个模拟的数据集,包含一些产品的销售数据。
import pandas as pd
import numpy as np# 创建数据集
np.random.seed(0)
dates = pd.date_range('20230101', periods=100)
df = pd.DataFrame({'date': dates,'product': np.random.choice(['A', 'B', 'C', 'D'], size=100),'sales': np.random.randint(50, 200, size=100),'profit': np.random.randint(20, 100, size=100)
})
3.2 使用Matplotlib进行数据可视化
销售趋势折线图
我们首先使用Matplotlib绘制产品销售趋势的折线图。
import matplotlib.pyplot as plt# 按日期汇总销售数据
sales_trend = df.groupby('date')['sales'].sum()# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(sales_trend.index, sales_trend.values)
plt.xlabel('日期')
plt.ylabel('销售额')
plt.title('销售趋势折线图')
plt.show()

各产品销售额柱状图
接下来,我们绘制各产品销售额的柱状图。
# 按产品汇总销售数据
product_sales = df.groupby('product')['sales'].sum()# 绘制柱状图
plt.figure(figsize=(8, 6))
plt.bar(product_sales.index, product_sales.values, color=['red', 'blue', 'green', 'purple'])
plt.xlabel('产品')
plt.ylabel('销售额')
plt.title('各产品销售额柱状图')
plt.show()

3.3 使用Seaborn进行数据可视化
销售和利润的散点图
我们使用Seaborn绘制销售和利润的散点图。
import seaborn as sns# 绘制散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='sales', y='profit', hue='product', data=df)
plt.xlabel('销售额')
plt.ylabel('利润')
plt.title('销售额与利润的关系')
plt.show()

产品销售分布箱线图
我们使用Seaborn绘制各产品销售分布的箱线图。
# 绘制箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='product', y='sales', data=df)
plt.xlabel('产品')
plt.ylabel('销售额')
plt.title('各产品销售分布箱线图')
plt.show()

3.4 综合实例的输出结果
通过运行上述代码,我们可以得到一系列图表,这些图表直观地展示了销售数据的分布和趋势。
- 销售趋势折线图:展示了整个时间段内的销售趋势,帮助我们识别出销售高峰和低谷。
- 各产品销售额柱状图:展示了不同产品的销售额对比,帮助我们确定哪些产品最受欢迎。
- 销售额与利润的散点图:展示了销售额和利润之间的关系,帮助我们分析销售和利润的相关性。
- 各产品销售分布箱线图:展示了不同产品的销售分布情况,帮助我们识别出销售额的集中区域和异常值。
通过这些图表,我们可以更好地理解和解释数据,从而做出更明智的决策。
四、总结
本文详细介绍了Python中两个主要的数据可视化库——Matplotlib和Seaborn的使用方法,并通过一个综合实例展示了如何使用这两个库进行数据可视化。Matplotlib提供了强大的绘图功能和高度的定制性,而Seaborn则提供了更简洁的接口和更美观的默认样式。根据不同的需求,我们可以选择合适的库进行数据可视化,从而更好地理解和解释数据。
作者:Rjdeng
链接:https://juejin.cn/post/7399985797540069386
相关文章:
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个…...
Java CompletableFuture:你真的了解它吗?
文章目录 1 什么是 CompletableFuture?2 如何正确使用 CompletableFuture 对象?3 如何结合回调函数处理异步任务结果?4 如何组合并处理多个 CompletableFuture? 1 什么是 CompletableFuture? CompletableFuture 是 Ja…...
5个免费在线 AI 绘画网站推荐,附100+提示词!
在数字化时代,艺术创作与人工智能的结合已带来前所未有的创新体验。AI 绘画技术,基于先进的人工智能算法,为艺术创作提供了全新的视角和工具。当前,多个免费在线AI绘画平台应运而生,为创作者们提供了丰富的灵感和创作机…...
C++基础语法:while的使用
前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 引入 while的使用是编写代码的基础内容.笔者的记忆力已不如以前,最近遇到了还花了不少功夫,可见是掌握地不够牢固.所以对while的思路和内容…...
鹏哥C语言自定义笔记重点(29-)
29.函数指针数组 30.void指针是不能直接解引用,也不能-整数。 void*是无具体类型的指针,可以接受任何类型的地址。 31.qsort:使用快速排序的思想实现一个排序函数(升序) 32. 33.地址的字节是4/8 34.char arr[]{a,b} sizeof(arr[0]1)答案是4࿰…...
代码随想录算法训练营第六十天 | dijkstra(堆优化版)、Bellman_ford 算法精讲
一、dijkstra(堆优化版) 题目连接:47. 参加科学大会(第六期模拟笔试) (kamacoder.com) 文章讲解:代码随想录 (programmercarl.com)——dijkstra(堆优化版) 二、Bellman_ford 算法精讲…...
boost::asio 库版本,C/C++代码编译兼容性
1、boost::asio::spawn 开启有栈(stackful)协同程序,版本改进及限制 > boost_1_80 版本应采用以下方式。 auto f [self, this](const boost::asio::yield_context& y) noexcept {bool success_ do_handshake(y);if (!success_) {clo…...
前端开发的项目导入方法与应用
前端项目启动问题归集: 由于前端的项目对于npm的版本有要求,需要将其升级到20,所以必要的时候通过nvm,或者直接下载最新的安装包进行npm覆盖安装。在项目目录中应用npm i安装node_modules,如果没有正常安装的话&#…...
C++:模拟实现string
前言: 为了更好的理解string底层的原理,我们将模拟实现string类中常用的函数接口。为了与std里的string进行区分,所以用命名空间来封装一个自己的strin类。 string.h #pragma once #define _CRT_SECURE_NO_WARNINGS 1#include<iostream&…...
浅谈Kafka(一)
浅谈Kafka(一) 文章目录 浅谈Kafka(一)Kafa的设计是什么样的数据传输的事务定义消息队列的应用场景Kafka怎么样判断节点是否存活Kafka的消息是采用pull模式还是push模式Kafka在磁盘上的消息格式Kafka高效文件存储设计特点Kafka与传…...
Redis7基础篇(八)
redis集群 是什么 能干吗 集群算法-分片-槽位slot redis集群的槽位slot redis集群的分片 分片和槽位的优势 槽位映射的解决方案 上面的三个方案分别对应了小厂 中厂 大厂 哈希槽取余分区 缺点 一致性哈希算法分区 小总结 哈希槽分区 经典面试题 这里说的redis是ap而不是cp的 …...
Tauri简介
在Tauri应用中,Rust和前端(通常是基于Web技术如React、Vue或Angular)之间的交互是一个核心特性,它允许开发者利用Rust的强大功能和性能,同时保持前端开发的灵活性和丰富的生态系统。这种交互主要通过Tauri提供的API桥接…...
JavaWeb——MVC架构模式
一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 ,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户…...
Excel求和方法之
一 SUM(),选择要相加的数,回车即可 二 上面的方法还不够快。用下面这个 就成功了 三 还有一种一样快的 选中之后,按下Alt键和键(即Alt)...
Windows Server 域控制服务器安装及相关使用
目录 1.将客户机加入域 2.安装域控制器 3.新建域用户 4.设置用户登录时间,账户过期时间 5.软件分发 编辑 6.换壁纸 7.OU与GPO的概念 域为集中控制,拿下域控是拿下目标的关键 以Windows Server 2022为例 1.将客户机加入域 前提:客…...
linux基础命令(超级详细)
Linux 系统提供了丰富的命令行工具,用于各种文件操作、系统管理和网络配置等任务。以下是一些常用的 Linux 基础命令: 一、 文件和目录操作 1. ls: 列出目录内容 ls 列出当前目录的文件和目录 ls -l 以长格式列出文件和目录,包…...
大模型笔记之-XTuner微调个人小助手认知
前言 使用XTuner 微调个人小助手认知 一、下载模型 #安装魔搭依赖包 pip install modelscope新建download.py内容如下 其中Shanghai_AI_Laboratory/internlm2-chat-1_8b是魔搭对应的模型ID cache_dir/home/aistudio/data/model’为指定下载到本地的目录 from modelscope im…...
用TensorFlow实现线性回归
说明 本文采用TensorFlow框架进行讲解,虽然之前的文章都采用mxnet,但是我发现tensorflow提供了免费的gpu可供使用,所以果断开始改为tensorflow,若要实现文章代码,可以使用colaboratory进行运行,当然&#…...
IT计算机软件系统类毕业论文结构指南:从标题到结论的全景视角
一、背景 在快速发展的IT和人工智能领域,毕业论文不仅是学术研究的重要成果,也展示了学生掌握新技术和应用的能力。随着大数据和智能系统的复杂性增加,毕业设计(毕设)的论文章节安排变得尤为关键。一个结构清晰、内容详…...
leetcode27:移除元素(正解)
移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
