文章目录

  • 一、数据可视化
    • 1. 数据可视化的概念
    • 2. 数据可视化流程
    • 3. 数据可视化目的
    • 4. 常见的可视化图表
      • 4.1 折线图
      • 4.2 柱形图
      • 4.3 条形图
      • 4.4 堆积图
        • 4.4.1 堆积面积图
        • 4.4.2 堆积柱形图和堆积条形图
      • 4.5 直方图
      • 4.6 箱形图
      • 4.7 饼图
      • 4.8 散点图
      • 4.9 气泡图
      • 4.10 误差棒图
      • 4.11 雷达图
  • 二、Python中常见的数据可视化库
    • 1. Matplotlib
    • 2. Seaborn
    • 3. pyecharts
    • 4. Bokeh
    • 5. Plotly
    • 6. ggplot
  • 三、Matplotlib
    • 1. Matplotlib简介
    • 2. Matplotlib的API
      • 2.1 Pyplot API
      • 2.2 Object-Oriented API
    • 3. 安装Matplotlib
    • 4. Matplotlib的核心类
      • 4.1 Figure 类
      • 4.2 Axes 类
      • 4.3 Axis 类
      • 4.4 Artist 类
      • 4.5 pyplot 模块


一、数据可视化

1. 数据可视化的概念

数据可视化是将复杂数据转化为图形、图表等视觉形式,借助人类对视觉信息的敏感度,快速呈现数据规律、趋势和关联,帮助人们直观理解数据、发现隐藏信息并高效沟通。

2. 数据可视化流程

Created with Raphaël 2.3.0开始读取目标数据选择图类型绘制图形保存可视化结果结束

3. 数据可视化目的

数据可视化的目的是通过直观的视觉形式,简化复杂数据,清晰呈现其规律、趋势和关联,帮助人们快速理解信息、发现问题、高效沟通,为决策或信息传递提供支持。

4. 常见的可视化图表

4.1 折线图

折线图主要用于展示数据随时间或连续变量的变化趋势,通过连接数据点形成的线条,直观呈现数值的增减规律、波动情况及变化速率,帮助快速发现数据的发展走向和周期性特征,便于分析趋势背后的关联与规律。

4.2 柱形图

柱形图通过高度不同的柱体直观对比不同类别或组别数据的数值大小,清晰呈现各类别间的差异、高低排序及数据分布,便于快速判断类别间的数量关系和突出关键数据。

4.3 条形图

条形图通过长度不同的横向条形直观对比多个类别或组别数据的数值大小,尤其适用于类别名称较长或类别数量较多的场景,能清晰呈现各类别间的数量差异、排序关系及分布特征,方便快速识别数据高低和类别间的比较结果。

4.4 堆积图

4.4.1 堆积面积图

堆积面积图通过叠加的面积块展示多个数据系列随时间或连续变量的变化趋势,既能呈现每个系列的数值增减,又能直观反映整体总量的变化及各部分占比关系,便于同时分析局部趋势与整体构成。

4.4.2 堆积柱形图和堆积条形图

堆积柱形图(纵向)和堆积条形图(横向)通过分层柱体 / 条形的总长度(高度)展示类别总量,同时以不同分层直观呈现各子类别占比,既便于对比不同类别间的总量差异,又能清晰体现单个类别内部的构成关系。

4.5 直方图

直方图通过将连续数据划分为若干区间( bins ),用矩形的高度表示每个区间内数据的频数或频率,直观呈现数据的分布特征(如集中趋势、离散程度、是否对称等),帮助快速判断数据的分布形态和异常值情况。

4.6 箱形图

箱形图通过展示数据的四分位数(中位数、上下四分位数)、最大值、最小值及异常值,直观呈现数据的分布特征(集中趋势、离散程度、对称性)和潜在异常情况,便于快速对比多组数据的分布差异与整体统计特征。

4.7 饼图

饼图通过将圆形划分为不同比例的扇形,直观展示单个数据总体中各组成部分的占比关系,清晰呈现各部分在整体中的相对大小和构成比例,便于快速理解类别间的份额差异及整体结构特征(适用于类别较少的场景)。

4.8 散点图

散点图通过在直角坐标系中绘制多组数据点(每个点对应两个变量的数值),直观呈现变量间的关联关系(如正相关、负相关或无相关),同时能反映数据的分布密集程度和异常值,帮助快速识别变量间的潜在规律或趋势。

4.9 气泡图

气泡图在散点图基础上,通过气泡的大小增加第三个变量的信息维度,既呈现两个变量间的关联关系,又能直观展示每个数据点对应的第三个变量的数值规模,从而同时反映三个变量间的相互关系及数据的多重特征。

4.10 误差棒图

误差棒图通过在数据点或统计量(如均值)旁添加线段(误差棒),直观展示数据的变异范围(如标准差、标准误、置信区间等),既呈现核心数据的集中趋势,又能反映其不确定性或离散程度,帮助更全面地理解数据的可靠性与波动特征。

4.11 雷达图

雷达图以从同一点出发的多条坐标轴(代表不同指标)为框架,将各指标数据连接成多边形,直观展示单个样本在多维度指标上的表现,以及多个样本在各维度的差异与整体特征,便于快速对比多维度数据的均衡性和综合水平。


二、Python中常见的数据可视化库

1. Matplotlib

Matplotlib 是 Python 中最基础且应用广泛的数据可视化库,提供了高度自定义的绘图接口,支持绘制折线图、柱状图、饼图等多种基础图表,可灵活控制图表的样式细节,适用于从简单数据展示到复杂科学绘图的各类场景。

2. Seaborn

Seaborn 基于 Matplotlib 开发,简化了绘图流程,内置多种美观的默认样式,专注于统计数据可视化,能轻松绘制热力图、箱线图、小提琴图等统计图表,便于快速探索数据分布和变量关系。

3. pyecharts

pyecharts 是基于 ECharts 的 Python 可视化库,擅长生成交互式网页图表,支持折线图、地图、词云等多种动态图表,可通过简单代码实现图表的交互功能(如缩放、 tooltip 提示),适合用于 Web 数据可视化展示。

4. Bokeh

Bokeh 是专注于交互式可视化的 Python 库,能生成可在浏览器中展示的动态图表,支持大型数据集的高效渲染,可通过回调函数实现复杂交互,常用于构建交互式数据仪表盘。

5. Plotly

Plotly 是一个功能强大的交互式可视化库,支持多种图表类型(包括 3D 图表),提供直观的交互体验(如悬停查看详情、缩放旋转),既适用于快速绘制基础图表,也能构建复杂的交互式可视化应用,且支持 Python、R 等多语言。

6. ggplot

ggplot 基于 R 语言的 ggplot2 理念开发,采用 “图层叠加” 的语法逻辑,通过简洁代码即可生成美观且规范的统计图表,注重数据与图形元素的映射关系,适合遵循 “ Grammar of Graphics ” 思想的用户快速实现可视化。


三、Matplotlib

1. Matplotlib简介

Matplotlib 是 Python 中最经典、应用最广泛的数据可视化库,诞生于 2003 年,最初旨在模仿 Matlab 的绘图风格,为 Python 提供类似的可视化能力。它支持从简单的折线图、柱状图到复杂的热图、三维图等几乎所有基础图表类型,且允许开发者通过代码精细控制图表的每一个细节(如坐标轴刻度、颜色、字体、图例等),灵活性极高。无论是快速绘制草图、生成 publication 级别的科研图表,还是嵌入 GUI 应用程序,Matplotlib 都能胜任,是 Python 可视化的基础工具,也是许多其他可视化库(如 Seaborn)的底层依赖。

2. Matplotlib的API

Matplotlib 提供两种主要的编程接口,适用于不同场景和使用习惯:

2.1 Pyplot API

Pyplot API 是 Matplotlib 的交互式接口,通过matplotlib.pyplot模块提供一系列类似 Matlab 的函数(如plot()、bar()、show()),无需显式创建图形对象,直接调用函数即可逐行绘制图表。它适合快速生成简单图表或进行交互式探索,代码简洁直观,例如用plt.plot(x, y)可直接绘制折线图,plt.title()添加标题。但缺点是当图表复杂(如多子图、自定义样式较多)时,容易出现状态管理混乱。

2.2 Object-Oriented API

面向对象 API(OO API)通过显式创建图形(Figure)和子图(Axes)对象,调用对象的方法(如ax.plot()、ax.set_title())进行绘图,更符合 Python 的面向对象编程思想。它将图表的各个元素(图形、子图、坐标轴等)视为独立对象,便于精细控制复杂图表的结构(如多子图布局、共享坐标轴、自定义图例位置等),适合开发可复用的可视化代码或绘制专业级图表。例如先通过fig, ax = plt.subplots()创建图形和子图对象,再用ax.plot(x, y)绘图,逻辑更清晰,是处理复杂场景的推荐方式。

3. 安装Matplotlib

在开始使用Matplotlib之前,需要先安装它,通过以下命令安装:

pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/

4. Matplotlib的核心类

4.1 Figure 类

Figure类是Matplotlib中所有绘图元素的顶层容器,可理解为“画布”。一个Figure对象代表一张完整的图像,包含所有子图(Axes)、标题、图例、颜色条等元素。通过plt.figure()Figure()可创建Figure对象,其属性(如尺寸figsize、分辨率dpi、背景色facecolor)决定了图像的整体框架。例如,一张图中可能有1个或多个子图,这些子图都嵌套在同一个Figure对象中。

plt.figure()方法如下所示:

def figure(num=None,  # autoincrement if None, else integer from 1-Nfigsize=None,  # defaults to rc figure.figsizedpi=None,  # defaults to rc figure.dpifacecolor=None,  # defaults to rc figure.facecoloredgecolor=None,  # defaults to rc figure.edgecolorframeon=True,FigureClass=Figure,clear=False,**kwargs):

Figure 类构造函数中一些常用的参数:

参数名描述默认值示例
num指定图形的编号或名称,用于复用图形Noneplt.figure(num=1)
plt.figure(num='plot1')
figsize指定 Figure 的尺寸大小(单位为英寸),格式为 (width, height)Nonefig = plt.figure(figsize=(8, 6))
dpi设置图形的分辨率(每英寸点数)。None(默认100)fig = plt.figure(dpi=150)
facecolor设置 Figure 背景颜色。'white'fig = plt.figure(facecolor='lightgray')
edgecolor设置 Figure 边框的颜色。'white'fig = plt.figure(edgecolor='black')
linewidth控制 Figure 边框线宽。0.0fig = plt.figure(linewidth=2.0)
frameon是否显示 Figure 的边框。Truefig = plt.figure(frameon=False)
subplotpars可选的 SubplotParams 对象,控制子图之间的间距和边距等。Nonefrom matplotlib import rc<br>sp = rc.subplotparams(left=0.1)<br>fig = plt.figure(subplotpars=sp)
tight_layout布尔值或字典,是否自动调整子图布局以避免重叠。Falsefig = plt.figure(tight_layout=True)
constrained_layout布尔值,是否启用更智能的布局调整系统,通常比 tight_layout 更强大。Falsefig = plt.figure(constrained_layout=True)
layout控制整体布局方式,可选值为 'tight''constrained',是对 tight_layoutconstrained_layout 的简化接口。Nonelayout='tight'
layout='constrained'
FigureClass自定义一个继承自 Figure 的类,用于创建图形对象。Figure 类本身fig = plt.figure(FigureClass=MyFigure)
clear如果为 True,则在复用已有 Figure 时清除其内容;否则保留旧内容。Falsefig = plt.figure(clear=True)

4.2 Axes 类

Axes类代表Figure中的“子图”,是实际绘制数据的区域,包含坐标轴(Axis)、标题、图例等元素。每个Axes对象对应一个独立的绘图区域(如折线图、柱状图所在的区域),一张Figure中可包含多个Axes(通过plt.subplots(nrows, ncols)创建网格状子图)。绘图操作(如ax.plot()ax.bar())主要通过Axes对象的方法实现,同时可通过ax.set_xlabel()ax.set_title()等方法设置子图的细节。

Axes 类常用参数说明表:

参数名描述默认值示例
fig所属的 Figure 对象。Axes(fig=fig)
rect定义坐标轴的位置和大小,格式为 [left, bottom, width, height](归一化坐标)rect=[0.1, 0.1, 0.8, 0.8]
facecolor坐标轴背景颜色。'white'facecolor='lightgray'
frame_on是否绘制坐标轴的边框(spines)。Trueframe_on=False
sharex共享 x 轴的其他 Axes 对象,用于同步缩放。Nonesharex=ax1
sharey共享 y 轴的其他 Axes 对象。Nonesharey=ax1
labelAxes 的标签,可用于 figure.axes 字典查找。''label='main_plot'
xscale设置 x 轴的刻度类型(如 ‘log’, ‘linear’ 等)。'linear'xscale='log'
yscale设置 y 轴的刻度类型。'linear'yscale='log'
xlim设置 x 轴范围,格式为 (min, max)自动根据数据xlim=(0, 10)
ylim设置 y 轴范围,格式为 (min, max)自动根据数据ylim=(0, 5)
xticks自定义 x 轴刻度位置。自动xticks=[0, 2, 4, 6]
yticks自定义 y 轴刻度位置。自动yticks=[0, 1, 2]
title设置 Axes 的标题。title='My Plot Title'
xlabel设置 x 轴标签。xlabel='X Data'
ylabel设置 y 轴标签。ylabel='Y Data'

4.3 Axis 类

Axis类代表Axes中的坐标轴(x轴、y轴,3D图中还包括z轴),负责控制坐标轴的刻度、标签、范围等。它包含刻度线(ticks)、刻度标签(tick labels)、轴标签(label)等元素,可通过ax.xaxisax.yaxis获取对应Axis对象,进而自定义刻度间隔(set_ticks())、刻度标签旋转(set_rotation())、轴范围(set_lim())等,例如调整x轴刻度为每月1号或设置y轴范围为0到100。

4.4 Artist 类

Artist类是Matplotlib中所有可绘制元素的基类,涵盖了Figure、Axes、Axis等容器类,以及线条(Line2D)、文本(Text)、矩形(Rectangle)、图例(Legend)等具体图形元素。所有Artist对象都拥有样式属性(如颜色color、线宽linewidth、透明度alpha),并通过draw()方法被渲染到画布上。Matplotlib的绘图过程本质上是创建和配置各种Artist对象,并将它们添加到Figure或Axes中的过程。

4.5 pyplot 模块

pyplot模块(matplotlib.pyplot)并非类,而是一个封装了底层类的函数接口集合,提供了类似Matlab的命令式绘图方式。它通过维护一个“当前Figure”和“当前Axes”的状态,允许用户用函数(如plt.plot()plt.xlabel())直接操作当前绘图区域,无需显式创建对象。例如plt.plot(x, y)会自动将线条添加到当前Axes中,plt.show()则显示当前Figure。pyplot简化了简单绘图的流程,但其状态管理依赖全局变量,复杂场景下推荐结合面向对象API使用。

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

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

相关文章

传输层协议UDP原理

端口号回顾端口号的作用类似pid&#xff0c;用来标识进程的唯一性。只是为了与系统解耦&#xff0c;所以有了端口号。通过ip来确定唯一主机&#xff0c;再通过端口号找到指定的进程。就可以让全网内唯一的两个进程通信了。所以一个完整的报文至少要携带ip和端口号&#xff0c;i…

【牛客刷题】小红的数字删除

文章目录 一、题目介绍1.1 题目描述1.2 输入描述:1.3 输出描述:1.4 示例11.5 示例2二、解题思路2.1 核心观察2.2 关键问题处理三、算法实现四、算法分析4.1 算法流程图4.2 为什么这么设计算法?4.3 算法复杂度五、模拟演练数据示例1: "103252"示例2: "333&quo…

《大数据技术原理与应用》实验报告三 熟悉HBase常用操作

目 录 一、实验目的 二、实验环境 三、实验内容与完成情况 3.1 用Hadoop提供的HBase Shell命令完成以下任务 3.2 现有以下关系型数据库中的表和数据&#xff0c;要求将其转换为适合于HBase存储的表并插入数据&#xff1a; 四、问题和解决方法 五、心得体会 一、实验目的…

微服务初步入门

服务拆分原则 单一职责原则 单一职责原则原本是面向对象设计的一个基本原则&#xff0c;是指一个类应该专注于单一的功能&#xff0c;不要存在多于一个导致类变更的原因 在微服务架构中&#xff0c;是指一个微服务只负责一个功能或者业务领域&#xff0c;每个服务应该由清晰的定…

Liunx操作系统笔记5

用户管理命令&#xff1a; useradd命令&#xff1a; useradd命令的功能是创建并设置用户信息。使用useradd命令可以自动完成用户信息、基本组、家目录等的创建工作&#xff0c;并在创建过程中对用户初始信息进行定制。语法格式:useradd 参数 用户名常用参数: -M 不建立用…

spring-ai-alibaba 接入Tushare查询股票行情

最近spring-ai-alibaba主干分支新增了对Tushare的支持&#xff0c;一起来看看如何使用简单样例老样子&#xff0c;分三步进行&#xff1a;第一步&#xff1a;添加依赖<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-aliba…

Java使用Langchai4j接入AI大模型的简单使用(一)

一、LangChain4j 简介 LangChain4j 是 Java 生态中的 LangChain 实现&#xff0c;是一个用于构建大语言模型(LLM)应用程序的框架。它提供了与各种LLM服务集成的能力&#xff0c;并简化了构建复杂AI应用的过程。 LangChain4j官方文档&#xff1a;Integrations | LangChain4j …

Linux —— A / 基础指令

建议学习路径&#xff1a;Linux系统与系统编程 ⇒ Linux网络和网络编程 ⇒ MySQL一、初识shell命令 1.1、关于 Linux 桌面很多同学的 Linux 启动进⼊图形化的桌⾯. 这个东西⼤家以后就可以忘记了。以后的工作中没有机会使用图形界面。思考: 为什么不使用图形界面? 1.2、下…

[论文阅读] 人工智能 + 软件工程 | 用大语言模型+排名机制,让代码评论自动更新更靠谱

LLMCup&#xff1a;用大语言模型排名机制&#xff0c;让代码评论自动更新更靠谱 LLMCup: Ranking-Enhanced Comment Updating with LLMsarXiv:2507.08671 LLMCup: Ranking-Enhanced Comment Updating with LLMs Hua Ge, Juan Zhai, Minxue Pan, Fusen He, Ziyue Tan Comments: …

悲观锁 乐观锁

悲观锁 乐观锁 在没有加锁的秒杀场景下 每秒打进来的请求是巨大的 高并发场景下 我们发现不仅异常率高的可怕 库存竟然还变成了负数 这产生的结果肯定是很大损失的 那为什么会出现超卖问题呢 我们假设有下面两个线程线程1查询库存&#xff0c;发现库存充足&#xff0c;创建订单…

如何使用Cisco DevNet提供的免费ACI学习实验室(Learning Labs)?(Grok3 回答)

Cisco DevNet 提供的免费 ACI&#xff08;Application Centric Infrastructure&#xff09;学习实验室&#xff08;Learning Labs&#xff09;是帮助用户学习和实践 Cisco ACI 技术&#xff08;包括 APIC 控制器&#xff09;的优秀资源&#xff0c;适合网络工程师、开发者和准备…

Combine的介绍与使用

目录一、Combine 框架介绍二、核心概念三、基础使用示例3.1、创建 Publisher & 订阅3.2、操作符链式调用3.3、Subject 使用&#xff08;手动发送值&#xff09;3.4、网络请求处理3.5、组合多个 Publisher3.6、错误处理四、核心操作符速查表 Operator五、UIKit 绑定示例六、…

【Java笔记】七大排序

目录1. 直接插入排序2. 希尔排序3. 选择排序4. 堆排序(重要)5. 冒泡排序6. 快速排序&#xff08;重要&#xff09;6.1 Hoare 法6.1.1 Hoare 法优化6.2 挖坑法&#xff08;重点&#xff09;6.3 快速排序的非递归写法7. 归并排序海量数据的排序问题8. 总结1. 直接插入排序 时间复…

H.264编解码(NAL)

在我们的日常生活中&#xff0c;比如有缓存电影或者是发送视频的需求。如果没有视频压缩&#xff0c;一部手机只能存几分钟视频&#xff0c;1TB 硬盘也装不下几部电影&#xff0c;用 4G 网络发一段 1 分钟视频&#xff0c;可能需要几十分钟&#xff08;甚至传不完&#xff09;&…

新手向:Python自动化办公批量重命名与整理文件系统

本文将详细介绍如何使用Python实现一个强大的文件批量重命名与整理工具&#xff0c;帮助开发者自动化这一繁琐过程。本教程面向Python初学者&#xff0c;通过一个完整的项目案例&#xff0c;讲解文件系统操作的核心技术。我们将构建的工具将具备以下功能&#xff1a;基于正则表…

C++ 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例

C 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例一、左值右值1.左值2.右值二、左值引用右值引用1.左值引用2.右值引用总结三、integral_constant四、integral_constant的元模板使用案例1.求最大整数2.内存对齐alignof关键字元模板计算内存…

c++算法一

1.双指针总结&#xff1a;1.复写0这道题&#xff0c;告诉我们要正难其反&#xff0c;我们从后向前进行重写&#xff0c;删除某些数字的时候&#xff0c;我们可以从前向后遍历&#xff0c;但是增加一些数字的时候会对后面的数据进行覆盖&#xff0c;所以要从后向前进行2.快乐数涉…

LeetCode-283. 移动零(Java)

283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: n…

【数据库】慢SQL优化 - MYSQL

一、数据库故障的关键点 引起数据库故障的因素有操作系统层面、存储层面&#xff0c;还有断电断网的基础环境层面&#xff08;以下称为外部因素&#xff09;&#xff0c;以及应用程序操作数据库和人为操作数据库这两个层面&#xff08;以下称内部因素&#xff09;。这些故障中外…

桶排序算法深度剖析

&#x1f50d; 桶排序算法深度剖析 &#x1f3af; 核心原理图解⚙️ 完整算法流程 #mermaid-svg-LyB6SpaZ132X4Wtn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LyB6SpaZ132X4Wtn .error-icon{fill:#552222;}#mer…