第一章 数据可视化和matplotlib

news2025/1/19 23:02:44

Python数据可视化

第一章 数据可视化和matplotlib

1.数据可视化概述

1.1.什么是数据可视化

​ 数据可视化旨在借助图形化的手段,将一组数据以图形的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。

​ 数据可视化发展历史

​ 可视化其实是一个抽象的过程,它可以简单地理解为将一个不易描述的事物形成一个可感知画面的过程,也就是从数据空间到图形空间的映射。

​ 无论原始数据被映射为哪种图形数据,最终要达到的目的只有一个,便是准确地、高效地、全面地传递信息,进而建立起数据间的关系,使人们发现数据间的规律和特征,并挖掘出有价值的信息,提高数据沟通的效率。

​ 假设某公司员工在整理全年KPI报告时准备了表格和图形这两种形式的数据。

​ 表格

​ 表格可以帮助公司领导快速地知道各季度的具体数值,但无法快速地了解各季度之间的比较情况。

​ 图形

​ 图形可以帮助公司高层准确地了解各季度之间的比较情况,方便对公司下一年的工作做出有效地决策。

总结:综上所述,数据可视化是数据分析工作中重要的一环,对数据潜在价值的挖掘有着深远的影响。随着数据可视化平台的拓展、表现形式的变化,以及实时动态效果、用户交互使用等功能的增加,数据可视化的内涵正在不断扩大,相信数据可视化的应用领域会越来越广泛。

1.2.常见的数据可视化方式

  • **折线图:**折线图是将数据标注成,并通过直线将这些点按某种顺序连接而成的图表,它以折线的倾斜程度来形象地反映事物沿某一维度的变化趋势,能够清晰地展示数据增减的趋势、速率、规律及峰值等特征。

​ 成都市4月23-29日的最高气温和最低气温的变化情况

  • **柱状图:**柱形图是由一系列宽度相等的纵向矩形条组成的图表,它使用矩形条的高度表示数值,以此反映不同分类数据之间的差异。

​ 2015-1018年阿里巴巴公司营收情况

  • **条形图:**条形图是横置的柱形图,由一系列高度相等、长短不一的纵向矩形条横向矩形条组成。

​ 2022年上半年快手用户对各类商品广告的关注率

  • 堆积图:堆积图可分为堆积面积图、堆积柱形图和堆积条形图。其中堆积面积图是由若干条折线与折线或水平坐标轴之间的填充区域组成的图表,用于强调每个部分变化的趋势;堆积柱形图和堆积条形图是由若干个以颜色或线条填充、高度不一的纵向矩形条或横向矩形条堆叠而成的图表,主要用于反映各构成部分在总体中的比重。

  • **直方图:**直方图又称质量分布图,是由一系列高低不等的纵向矩形条或线段组成的图表,用于反映数据的分布和波动情况。

​ 某厂商对 100 个抽样产品的质量级别评定情况

柱形图与直方图的区别包括以下两点:

  1. 柱形图用于展示离散型数据的分布,而直方图用于展示连续型数据的分布
  2. 柱形图的各矩形条之间具有固定的间隙,而直方图的各矩形条之间没有任何间隙。
  • **箱形图:**箱形图又称盒须图、箱线图,是一种利用数据中的5个统计量——最小值、下四分位数、中位数、上四分位数和最大值­——描述数据的图表,主要用于反映一组或多组数据的对称性、分布程度等信息,因形状如箱子而得名 。

​ 不同厂家所产地毯的耐用性

​ 箱形图中每个图形的结构是相同的,包括一个矩形箱体、上下两条竖线、上下两条横线

  • **饼图:**饼图是由若干个面积大小不一、颜色不同的扇形组成的圆形图表,它使用圆表示数据的总量,组成圆的每个扇形表示数据中各项占总量的比例大小,主要用于显示数据中各项大小与各项总和的比例

​ 2022年全国居民的人均消费支出情况

  • **散点图:**散点图又称X-Y图,是由若干个数据点组成的图表,主要用于判断两变量之间是否存在某种关联,或者总结数据点的分布模式。

​ 股票回报率与基金回报率 的投资分析情况

​ 散点图中数据点的分布情况可以体现变量之间的相关性。

  • 若所有的数据点在一条直线附近呈波动趋势,说明变量之间是线性相关的。

  • 若数据点在曲线附近呈波动趋势,说明变量之间是非线性相关的。

  • 若数据点没有显示任何关系,说明变量之间是不相关的。

  • 气泡图:气泡图是散点图的变形,它是一种能够展示多变量关系的图表。气泡图一般使用两个变量标注气泡在坐标系中的位置,使用第3个变量标注气泡的面积,适用于分类数据对比、多变量相关性等情况。

​ 第 1 梯队和第 2 梯队主流 App 用户量与上线时间的分布情况

  • **误差棒图:**误差棒图是使用误差棒注明被测量数据的不确定度大小的图表,用于表示测量数据中客观存在的测量偏差。误差棒是在表示测量值大小的方向上的一条线段,它以被测量数据的平均值为中点,线段长度的一半为不确定度。

​ 成都上半年的降雨量

  • **雷达图:**雷达图又称蜘蛛网图、星状图、极区图,由一组坐标轴和多个等距同心圆或多边形组成,是一种表现多维(4维以上)数据的图表。

​ 某人通过霍兰德职业兴趣测试的结果

  • **统计地图:**统计地图是一种以地图为背景,使用各种线纹、色彩、几何图形或实物形象标注指标数值的大小及其在不同地理位置的分布状况的图表。

​ 2021年2月1日中国新型冠状病毒肺炎疫情地图

  • **3D图表:**3D图表是一类在三维坐标系中呈现数据的图表,常用的图表包括3D散点图、3D折线图、3D曲面图、3D直方图、3D柱形图等。

​ 豆粕期权隐含波动率

1.3.选择正确的数据可视化图标

​ 数据可视化的图标类型十分丰富,好的图表可以有效、清晰地呈现数据地信息。对于用户而言,选择正确地图表是十分关键地,不仅可以达到“一图胜千言”地效果,而且会直接影响分析的结果。

​ 用户选择正确的数据可视化图表,需要明确数据的逻辑关系。数据的逻辑关系可分为4种:比较、分布、构成和联系

  • 基于比较关系可选择的图表:

​ 由图可知,若数据按照时间进行比较,当数据周期少时可以选择柱形图或折线图,数据周期多时可以选择雷达图或折线图;若数据按分类进行比较,当每个项目中仅包含1个变量时可以选择表格、条形图或柱形图,当每个项目包含2个变量时可以选择不等宽柱形图。

  • 基于分布关系可选择的图表:

​ 由图可知,基于分布关系的数据包括单变量(例如文化程度)、2个变量(例如文化程度和收入期望)、3个变量(例如文化程度、收入期望和工作经验)。若数据为单变量,可以选择直方图或正态分布图;若数据为2个变量,可以选择散点图;若数据为3个变量,可以选择曲面图。

  • 基于构成关系可选择的图表:

​ 由图可知,基于构成关系的数据按照是否变化可分为静态数据和随时间变化的数据。若是静态数据,可以选择饼图、瀑布图或堆积柱形图;若为随时间变化的数据,则先按照周期数分为少数周期数据和多周期数据,对于少数周期数据可以选择堆积柱形图,对于多周期数据可以选择堆积面积图。

  • 基于联系关系可选择的图表:

​ 由图可知,基于联系关系的数据,若数据中包含2个变量,可以选择散点图进行展示;若数据中包含3个变量,可以选择气泡图进行展示。

2.常见的数据可视化库

​ Python作为数据分析的首选语言,它针对数据分析的每个环节都提供了很多库。常见的数据可视化库包括matplotlib、seaborn、ggplot、bokeh、pygal、pyecharts

  • matplotlib:matplotlib是众多Python数据可视化库的鼻祖,其设计风格与20 世纪 80 年代设计的商业化程序语言MATLAB十分接近,具有很多强大且复杂的可视化功能。matplotlib包含多种类型的API,可以采用多种方式绘制图表并对图表进行定制

  • **seaborn:**seaborn是基于matplotlib进行高级封装的可视化库,它支持交互式界面,使得绘制图表的功能变得愈加容易,且图表的色彩更具吸引力,可以画出丰富多样的统计图表。
  • **ggplot:**ggplot是基于matplotlib并旨在以简单方式提高matplotlib可视化感染力的库,它采用叠加图层的形式绘制图形,例如先绘制坐标轴所在的图层,再绘制点所在的图层,最后绘制线所在的图层,但其并不适用于个性化定制图形。
  • **bokeh:**bokeh是一个交互式的可视化库,它支持使用Web 浏览器展示,可使用快速简单的方式将大型数据集转换成高性能的、可交互的、结构简单的图表。
  • **pygal:**pygal是一个可缩放矢量图表库,用于生成可在浏览器中打开的SVG格式的图表,这种图表可以在不同比例的屏幕上自动缩放,方便用户交互。
  • **pyecharts:**pyecharts是一个生成Echarts Enterprise Charts,商业产品图表)图表的库,它生成的Echarts图表凭借良好的交互性、精巧的设计得到了众多开发者的认可。

​ 尽管在matplotlib的基础上封装了很多更轻量的库,但万变不离其宗,掌握matplotlib可以更好的掌握底层原理,也可以更快速的学习其他可视化库。

3.初识matplotlib

3.1.matplotlib概述

​ matplotlib是一个由John D.Hunter等人员开发的、主要用于绘制2D图表的Python库。matplotlib支持numpy、pandas的数据结构,具有绘制丰富的图表、定制图表元素或样式的功能。 matplotlib 还可用于绘制一些3D图表 。

​ matplotlib实际上是一个面向对象的绘图库,它所绘制的图标元素均对应一个对象。matplotlib官网提供了3种API:pyplot API(implicit API)、object-oriented API(explicit API)、pylab API

  • pyplot API是使用pyplot模块开发的接口,该接口封装了一系列与MATLAB命令同名的函数,使用这些函数可以像使用MATLAB命令一样快速地绘制图表。

  • object-oriented API是面向对象的接口,该接口封装了一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才能完成一次完整的绘图。

  • pylab API是使用pylab模块开发的接口,它最初是为了模仿MATLAB的工作方式而设计的,包括pyplot、numpy模块及一些其它附加功能,适用于Python交互环境中。

    官方API参考

    **注:**matplotlib官方不建议使用pylab API进行开发,并在最新的版本中弃用了pylab API。用户在使用时可以根据自身的实际情况进行选择 ,若只是需要快速地绘制图表,可以选择pyplot API进行开发;若需要自定义图表,可以选择object-oriented API进行开发。

3.2.安装matplotlib

​ 在安装matplotlib前,需要先安装配置好Python环境,此处采用Python3.10作为环境:

​ 安装matplotlib有多种方式,可以通过pip命令(pip install matplotlib)直接安装,也可以使用Anaconda工具进行安装。Anaconda是一个开源的Python发行版本,包括conda、Python环境,以及诸如numpy、pandas、matplotlib、scipy等180多个科学计算包,既可以在同一台计算机上安装不同版本的软件包和依赖项,也能在不同环境之间进行切换,非常适合初学者使用。

​ Anaconda中文网可以作为安装学习参考。

  • 从Anaconda官网下载安装文件:

在这里插入图片描述

  • 启动Anaconda3安装程序,进入欢迎界面后点击“Next”按钮进入要求用户接收许可协议的界面,点击“T Agree”进入安装界面:

  • 这里选择为谁安装,“Just me”即只为当前用户,"All Users"即为当前主机所有用户,根据用户需求选择:

  • 选择安装路径,最好不含中文路径:

  • 在开始菜单栏种找到Anaconda3的“Anaconda Prompt”输入命令conda list即可看到Anaconda所集成的库:

  • 点击“Jupter Notebook”即可在浏览器打开web界面编辑,选择"New–Python3"就可以创建文件了。

3.3.使用matplotlib绘制图表

​ 绘制如下图表:

import numpy as np
import matplotlib.pyplot as plt
# 准备数据
data = np.array([1, 2, 3, 4, 5])
# 创建代表画布的Figure类的对象fig
fig = plt.figure()
# 在画布fig上添加坐标系风格的绘图区域
ax = fig.add_subplot(111)
# 绘制图表
ax.plot(data)
# 展示图表
plt.show()

​ 下面使用pyplot的函数快速地绘制同一个图表:

import numpy as np
import matplotlib.pyplot as plt
# 准备数据
data = np.array([1, 2, 3, 4, 5])
plt.plot(data)
plt.show()

​ plot()函数与plot()方法地参数用法是相同地,它们唯一的区别在于plot()函数缺少了self参数,可以直接被pyplot模块调用;而plot()方法只能被Axes类的对象调用。关于Canvas对象、Figure对象、Axes对象的结构如下图所示:

​ Axes对象拥有属于自己的坐标系,它可以是直角坐标系,即包含x轴和y轴的坐标系,也可以是三维坐标系(Axes的子类Axes3D对象),即包含x轴、y轴、z轴的坐标系。

​ 假设大家想画一幅素描:

​ 使用matplotlib绘制的图形主要由三层组成:容器层、图像层和辅助显示层:

  • 容器层主要由Canvas对象、Figure对象、Axes对象组成;
  • 图像层是指绘图区域内绘制的图形;
  • 辅助显示层是指绘图区域内除所绘图形之外的辅助元素,包括坐标轴、标题、图例、注释文本等。

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

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

相关文章

Spring IOC容器实例化Bean整体流程图

SpringBean实例化的基本流程-CSDN博客 Spring容器中的BeanDefinitionReader读取器,读取xml配置文件,解析每一个bean标签,将bean标签中信息封装到BeanDefinition对象中,该对象的集合存储到BeanDefinitionMap中,然后Spri…

Cocos Creator3.8 实战问题(三)去除scrollview背景色和label 对齐方式设置无效问题

1、 scrollview 默认背景是白色的, 我们不想要 scrollview 默认的背景颜色,怎么办? 设置 scrollview的color为透明吗? 不对,这会导致 view节点完全透明。 解决方法:直接删除scrollview 的Spritre frame就…

船用低速发动机缸压在线监测系统

LabVIEW开发船用低速发动机缸压在线监测系统 船用发动机结构复杂,部件相互连接,运行环境恶劣,使其更容易发生故障。如果船用发动机发生故障或工作状态不佳,将增加造成经济损失和威胁船舶安全的机。为了减少故障的发生&#xff0c…

【Kettle】Kettle部署与运行

一、部署 1.安装java 此处安装openjdk1.8,可用yum、apt、源码等方式安装,具体安装方式略。 2.安装kettle 1.下载 https://www.hitachivantara.com/en-us/products/pentaho-platform/data-integration-analytics/pentaho-community-edition.html 此…

Unity中UI Shader遮罩RectMask2D

文章目录 前言一、需要定义一个变体UNITY_UI_CLIP_RECTUNITY_UI_CLIP_RECT 二、需要申明一个_ClipRect,这是使用上面这个变体需要使用的,这个属性并没有在Properties声明1、现在我们用简单的代码测试一下 _ClipRect 的使用然后我们基于以上的基础,让 内层…

二、局域网联机

目录 1.下载资源包 2.配置NetworkManager 3.编写测试UI 1.下载资源包 2.配置NetworkManager (1)在Assets/Prefabs下创建Network Prefabs List 相应设置如下: (2) 创建空物体“NetworkManager”并挂载NetworkMan…

MySQL数据库——索引(5)-索引使用(上),验证索引效率、最左前缀法则、范围查询、索引失效情况、SQL提示

目录 索引使用 验证索引效率 最左前缀法则 范围查询 索引失效情况 索引列运算 字符串不加引号 模糊查询 or连接条件 数据分布影响 SQL提示 use index ignore index force index 索引使用(上) 验证索引效率 在讲解索引的使用原则之前&…

c语言常用语法,长时间不用容易忘。

关键字 auto 声明自动变量const 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变extern 声明变量或函数是在其它文件或本文件的其他位置定义register 声明寄存器变量signed 声明有符号类型变量或函数static 声明静态变量,修饰…

毅速课堂:3D打印随形水路在小零件注塑中优势明显

小零件注塑中的冷却不均匀问题常常导致烧焦现象的发生。这主要是因为传统机加工方法无法制造出足够细小的水路,以适应小零件的复杂形状。而3D打印技术的引入,尤其是随形水路的设计,为解决这一问题提供了新的解决方案。 3D打印随形水路技术的优…

3.canvas绘制基本图形——圆弧

圆弧是圆的组成部分,一个圆可以看成多个圆弧或者一个圆弧闭环组合而成。因此我们画圆弧的时候往往把他看成一个残缺的圆 arc arc是最基础最简单的圆弧绘制方法。 他有六个参数 参数一跟参数二表示圆的圆心坐标 参数三是圆的半径 参数四是圆开始的角度 参数五是圆结…

No module named ipykernel解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

HTML的相关知识

1.什么是HTML?基本语法 HTML: Hyper Text Markup Language (超文本标记语言) 超文本?超级文本,例如流媒体,声音、视频、图片等。 标记语言?这种语言是由大量的标签组成。HTML标签参考手…

单目标应用:基于沙丁鱼优化算法(Sardine optimization algorithm,SOA)的微电网优化调度MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出,该算法模拟沙丁鱼的生存策略,具有搜索能力强,求解精度高等特点。 沙丁鱼主要以浮游生物为食,这些生物包括细菌、腔肠…

SpringBoot整合RabbitMQ实现延迟队列功能

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

AOP 编程

目录 ​编辑一、AOP 编程 1、AOP 概念 2、AOP 编程的开发步骤 3、切面的名词解释 二、AOP 的底层实现原理 1、核心问题 2、动态代理类的创建 (1)JDK 的动态代理创建 (2)CGlib 的动态代理 (3)总结…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

设计模式5、原型模式 Prototype

解释说明&#xff1a;使用原型实例指定待创建对象的类型&#xff0c;并且通过复制这个原型阿里创建型的对象 UML 结构图&#xff1a; 抽象原型&#xff08;Prototype&#xff09;&#xff1a;规定了具体原型对象必须实现的clone()方法 具体原型&#xff08;ConcretePrototype&…

CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

漏洞简述 近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞&#xff0c;相关时间线如下&#xff1a; 9月7日&#xff0c;苹果发布紧急更新&#xff0c;修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞&#xff0c;漏洞被认为已经被…

爬取北京新发地当天货物信息并展示十五天价格变化(三)---获取物品十五天内的价格

。。。。。。。。。。。。。。。。。。。。。。 1.网页请求一下内容2.通过爬虫进行请求3.获取商品十五天详细数据并绘制折线图4.项目详细代码 1.网页请求一下内容 通过抓包我们发现一共七个参数 limit: 20 # 一页多少数据 current: …

自制代码编辑器:CASM Editor

哔哩哔哩演示视频&#xff1a;我使用python自制了一个代码编辑器——CASM Editor_哔哩哔哩_bilibili 源代码&#xff1a; import idlelib.colorizer as idc import idlelib.percolator as idp import os import sys import threading import time import tkinter as T_tk imp…