Python 如何使用 Matplotlib 和 Seaborn 可视化数据

news2024/11/27 10:33:48

Python 如何使用 Matplotlib 和 Seaborn 可视化数据

一、简介

数据可视化是数据分析过程中非常重要的步骤。通过可视化,复杂的数据变得更直观,数据中的模式、趋势和异常可以更容易被识别。Python 提供了多个强大的库来进行数据可视化,其中最流行的两个库是 MatplotlibSeaborn。它们功能强大且易于使用,特别适合初学者和数据科学家进行数据展示和探索。

在这篇文章中,我们将通过代码示例,介绍如何使用 MatplotlibSeaborn 进行数据可视化。我们将讨论这两个库的基础功能,并展示如何通过它们绘制常见的数据图表,如折线图、柱状图、散点图、热力图等。

在这里插入图片描述

二、Matplotlib 简介

2.1 Matplotlib 是什么?

Matplotlib 是 Python 中最基础的绘图库,几乎所有其他高级绘图库都依赖于它。它能够绘制各种静态、动态和交互式图形,比如折线图、柱状图、散点图、饼图等等。Matplotlib 非常灵活,可以让用户定制几乎图表的每个部分,是学习 Python 可视化的必备工具。

2.2 Matplotlib 的安装

如果你还没有安装 Matplotlib,可以通过以下命令安装:

pip install matplotlib

2.3 使用 Matplotlib 绘制基础图表

我们从一个简单的折线图开始,这能帮助我们了解 Matplotlib 的基本语法和绘图方式。

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建折线图
plt.plot(x, y)

# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 显示图表
plt.show()

上面的代码展示了如何创建一个简单的折线图。通过 plt.plot() 函数传入 x 和 y 的数据,并使用 plt.show() 函数将图形展示出来。

2.4 Matplotlib 的常见图表

2.4.1 折线图

折线图是最常见的数据可视化图表之一,用来显示数据的变化趋势。上面的示例就是一个折线图。如果我们想要进一步调整图表的样式,比如改变线条的颜色、样式或标记,我们可以使用 Matplotlib 提供的各种参数。

# 设置折线颜色、线型和标记
plt.plot(x, y, color='red', linestyle='--', marker='o')

plt.title('Line Plot with Custom Style')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.show()
2.4.2 柱状图

柱状图用来展示不同类别的数据值。它非常适合比较多个分类的值。

# 创建柱状图
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 7, 3, 8, 4]

plt.bar(categories, values)

plt.title('Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

plt.show()
2.4.3 散点图

散点图用来展示两个变量之间的关系,特别适合用来查看数据的分布或模式。

# 创建散点图
x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78]

plt.scatter(x, y)

plt.title('Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.show()
2.4.4 饼图

饼图用来展示每个部分相对于整体的比例。

# 创建饼图
sizes = [15, 30, 45, 10]
labels = ['Group A', 'Group B', 'Group C', 'Group D']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)  # 将 Group A 突出显示

plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)

plt.title('Pie Chart')
plt.show()

2.5 Matplotlib 的自定义和细节调整

Matplotlib 的强大之处在于它允许用户高度定制每一个图表细节。你可以调整图例、坐标轴、线条样式、颜色、字体等等。例如,下面我们展示如何添加图例和调整坐标轴刻度。

# 多条线的折线图
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]

plt.plot(x, y1, label='Squared', color='blue', linestyle='--')
plt.plot(x, y2, label='Linear', color='green')

# 添加图例
plt.legend()

# 设置坐标轴范围
plt.xlim(0, 6)
plt.ylim(0, 30)

plt.title('Multiple Line Plot with Legend')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.show()

三、Seaborn 简介

3.1 Seaborn 是什么?

Seaborn 是基于 Matplotlib 之上的高级绘图库,它的优势在于提供了更简洁的接口,能够绘制更加美观和统计性更强的图表。特别是在处理数据框(如 pandas 数据框)时,Seaborn 提供了许多便捷的方法,让你可以快速绘制出复杂的图表。

3.2 Seaborn 的安装

同样地,如果你还没有安装 Seaborn,可以使用以下命令安装:

pip install seaborn

3.3 使用 Seaborn 绘制图表

Seaborn 在处理数据集时非常方便,特别是与 pandas 数据框的结合。我们可以直接使用 pandas 数据框的数据绘制图表。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建数据框
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5, 6, 7, 8, 9],
    'y': [5, 4, 3, 7, 6, 8, 7, 5, 6],
    'category': ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'A', 'B']
})

# 使用 Seaborn 创建散点图
sns.scatterplot(data=data, x='x', y='y', hue='category')

plt.title('Scatter Plot with Seaborn')
plt.show()

在这个例子中,我们使用了 Seaborn 的 scatterplot() 函数,并通过 hue 参数为不同类别设置不同的颜色。

3.4 Seaborn 的常见图表

3.4.1 热力图

热力图(Heatmap)是可视化矩阵数据的绝佳工具,能够直观地展示数据之间的相关性。

import numpy as np

# 创建相关性矩阵
data = np.random.rand(10, 12)

# 绘制热力图
sns.heatmap(data, cmap='coolwarm')

plt.title('Heatmap')
plt.show()
3.4.2 箱线图

箱线图(Boxplot)是用来展示数据分布和离群值的有效方式。

# 绘制箱线图
sns.boxplot(x='category', y='y', data=data)

plt.title('Boxplot')
plt.show()
3.4.3 折线图
# 使用 Seaborn 绘制折线图
sns.lineplot(x='x', y='y', data=data)

plt.title('Line Plot with Seaborn')
plt.show()

3.5 Seaborn 的优势

与 Matplotlib 相比,Seaborn 的主要优势在于:

  1. 默认样式更美观:Seaborn 的默认图表风格比 Matplotlib 更加美观,尤其适合展示统计结果。
  2. 便捷的数据处理:Seaborn 提供了直接处理 pandas 数据框的接口,减少了很多不必要的代码。
  3. 强大的统计可视化功能:Seaborn 具有一些高级的统计图表功能,如回归图、聚合图等,方便用户进行

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

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

相关文章

ChatGPT:引领人工智能新潮流!

一、ChatGPT 是什么? 1. ChatGPT 的强大功能和广泛应用。 ChatGPT 作为一款先进的 AI 语言模型,拥有众多强大功能。它可以进行文本生成、文本分类、情感分析、机器翻译等多种自然语言处理任务。同时,ChatGPT 还能进行对话式交互,…

python之详解集合

一种无序且不重复的数据容器,集合用大括号{}表示。 1、集合的查找访问 集合是不能通过 集合名[index] 这种方式访问的,其作用在于快速读取,而不是针对某个元素。 但,可将集合转为列表,再由列表访问元素。不过&#…

Laravel Filament 如何配置多语言支持

演示 一、安装拓展包outerweb/filament-translatable-fields composer require outerweb/filament-translatable-fields配置模型 该套件包含一个名为 HasTranslations 的特性,用于使 Eloquent 模型具备多语言功能。翻译值以 JSON 格式存储,并不需要额外…

叙说 OSI 七层网络模型 | 你在第几层

引言 开放系统互联(OSI,Open Systems Interconnection)模型,这一国际标准化组织(ISO)提出的理论框架,是计算机网络通信领域内不可或缺的基础工具。如同语法和句法对于构建和解析语言的重要性一…

Python对PDF文件页面的旋转和切割

Python对PDF文件页面的旋转和切割 利用Python的.rotate()方法和.mediabox属性对PDF页面进行旋转和切割,最终生成一个PDF。下面结合案例进行说明,本示例中的名为split_and_rotate.pdf文件在practice_files文件夹中, 示例(1&#…

ShardingSphere分库分表产品介绍

目录 一、ShardingSphere分库分表产品介绍 二、客户端分库分表与服务端分库分表 1、ShardingJDBC客户端分库分表 2、ShardingProxy服务端分库分表 3、ShardingSphere混合部署架构 三、分库分表,能不分就不分! 1、为什么要分库分表? 2、…

基于SpringBoot点餐系统【附源码】

基于SpringBoot点餐系统 效果如下: 系统首页界面 用户注册界面 美食信息页面 促销活动页面 管理员登录主页面 系统管理界面 订单管理界面 研究背景 随着互联网的迅猛发展和人们生活节奏的加快,传统的点餐方式已经无法满足现代消费者对快速、便捷服务的…

解决银河麒麟操作系统中无法通过管理员安装软件或运行有执行权限脚本的问题

解决银河麒麟操作系统中无法通过管理员安装软件或运行有执行权限脚本的问题 1、问题描述2、问题分析3、问题解决方法 💐The Begin💐点点关注,收藏不迷路💐 1、问题描述 在银河麒麟操作系统中,通过终端执行命令时&…

103页PPT | 智慧城市综合解决方案

智慧城市概况 PPT开篇介绍了智慧城市的发展历程,从2014年国家提出《国家新型城镇化规划(2014-2020年)》开始,到2017年提出从“智慧城市”到“新型智慧城市”的转变,再到2020年新型智慧城市建设取得显著成效。这一过程中&#xff…

3.1 显示层技术演变

文章目录 静态网站公共网关接口CGIServletJSPJSP模板引擎第三方模板引擎前后端分离Thymeleaf 今天我将与大家分享显示层技术的演变历程,以及它们在现代Web开发中的应用。 静态网站 首先,我们从静态网站开始。静态网站主要由HTML、CSS和JavaScript等静态…

JimuReport报表部署 | 升级 | 仪表盘集成 | 迁移其他项目 (图文讲解)

目录 前言1. 项目部署2. 项目升级3. 仪表盘集成3.1 配置类事项3.2 版本升级事项4. 迁移到ruoyi-vue-pro4.1 权限4.2 前端5. 彩蛋前言 以下针对Vue以及Java的项目 对于文中所说的nginx以及Java的相关知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(…

冷热数据分离

优质博文:IT-BLOG-CN 一、背景 随着机票业务的快速发展,订单量持续增长对业务性能带来影响,需要进行冷热数据分离。目前机票订单模块主要使用Mysql(InnoDB)作为数据库存储,历史订单信息状态修改频率低并占用大量数据库存储空间&…

第69期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

LeetCode 1928.规定时间内到达终点的最小花费:动态规划

【LetMeFly】1928.规定时间内到达终点的最小花费:动态规划 力扣题目链接:https://leetcode.cn/problems/minimum-cost-to-reach-destination-in-time/ 一个国家有 n 个城市,城市编号为 0 到 n - 1 ,题目保证 所有城市 都由双向道…

Apache DolphinScheduler社区9月进展记录

各位热爱 Apache DolphinScheduler 的小伙伴们,社区 9 月月报更新啦!这里将记录 Apache DolphinScheduler 社区每月的重要更新,欢迎关注! 月度 Merge Star 感谢以下小伙伴上个月为 Apache DolphinScheduler 做的精彩贡献&#x…

数据结构前置知识(上)

1. 初识集合框架 1.1 什么是集合框架 在了解集合框架之前,我们先来认识一下数据结构,所谓数据结构就是描述和组织数据的一个东西. 那什么是集合框架呢?在java里面集合框架(Java Collection Framework),又被称为容器container,说白了就是很多个接口,抽象类,实现类组成的一个包,…

Node脚本实现批量打包Vue项目(child_process子进程、window)

前言 前几天用pnpmworkspace实现了monorepo,也就是单仓库多个项目,并且互相之间可能存在一定的联系。所以就存在一个打包的问题,也就是说,我想在打包某个特定子项目时,其他项目也执行build的命令。主要用到的是node的…

字节跳动推机器人大模型GR-2 展现智能自主操作新高度

字节跳动研究团队近日推出的第二代机器人大模型GR-2(Generative Robot2.0)正在引发业界广泛关注。这款智能机器人不仅标志着机器人大模型技术的重大突破,更预示着智能机器人应用即将迎来一个全新纪元。 GR-2的独特之处在于其创新的学习方式。…

力扣之1355.活动参与者

题目: Sql 测试用例: Create table If Not Exists Friends (id int, name varchar(30), activity varchar(30)); Create table If Not Exists Activities (id int, name varchar(30)); Truncate table Friends; insert into Friends (id, name, acti…

FreeRTOS学习总结

背景:在裸机开发上,有时候我们需要等待某个信号或者需要延迟时,CPU的运算是白白浪费掉了的,CPU的利用率并不高,我们希望当一个函数在等待的时候,可以去执行其他内容,提高CPU的效率,同…