Python数据可视化-第1章-数据可视化与matplotlib

教材

本书为《Python数据可视化》一书的配套内容,本章为第1章 数据可视化与matplotlib

本文主要介绍了什么是数据集可视化,数据可视化的目的,常见的数据可视化方式,如何选择正确的可视化图表,matplotlib的多种API使用以及matplotlib的层次结构等。

参考

政务可视化设计经验-图表习惯

数据可视化设计必修课(一):图表篇

一文讲透 | 大屏数据可视化图表选用指南

第1章 数据可视化与matplotlib

什么是数据可视化

数据可视化旨在借助图形化的手段,将一组数据以图形的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。
可视化其实是一个抽象的过程,它可以简单地理解为将一个不易描述的事物形成一个可感知画面的过程,也就是从数据空间到图形空间的映射

数据可视化的过程

数据可视化目的

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

常见的数据可视化方式

折线图
柱形图
条形图
堆积图
直方图


箱型图


饼图


散点图


气泡图
误差棒图
雷达图
统计地图
3D图表

选择正确的可视化图表

数据通常包含4种关系:比较、分布、构成和联系。

比较:比较关系主要关注数据中各类别或时间变化的情况。

分布:分布关系主要关注不同数值范围内包含多少数据的情况。

构成:构成关系主要关注各部分与整体占比的情况。

联系:联系关系主要关注两个及两个以上的变量之间关系的情况。

基于比较关系可选择的图表
基于分布关系可选择的图表
基于构成关系可选择的图表
基于联系关系可选择的图表
不同的划分方法


常见的数据可视化库

matplotlibseaborn、ggplot、bokeh、pygal、pyecharts

matplotlib库的简单使用

matplotlib库简介

matplotlib是一个由John D.Hunter等人员开发的、主要用于绘制2D图表的Python库

matplotlib支持numpy、pandas的数据结构,具有绘制丰富的图表、定制图表元素或样式的功能。 matplotlib 还可用于绘制一些3D图表

matplotlib官网提供了三种API:pyplot APIobject-oriented APIpylab API

pyplot API

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

通过pyplot API绘制图表的基本思路:

(1)导入pyplot模块。

(2)调用该模块的绘图函数来绘制图表。

(3)展示图表。

pyplot API屏蔽了底层中画布、绘图区域的创建细节,它会持续跟踪当前的画布和绘图区域

python 复制代码
import numpy as np
import matplotlib.pyplot as plt     # 导入 pyplot 模块
data = np.array([1, 2, 3, 4, 5])     # 准备数据
plt.plot(data) # 在当前画布的绘图区域中绘制图表
plt.show()   # 展示图表
object-oriented API

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

通过object-oriented API绘制图表的基本思路:

(1)导入pyplot模块。

(2)创建画布(Figure类的对象)。

(3)在画布上添加绘图区域(Axes类的对象)。

(4)调用绘图方法绘制图表。

(5)展示图表。

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

用户在使用时可以根据自身的实际情况进行选择 ,若只是需要快速地绘制图表,可以选择pyplot API进行开发;若需要自定义图表,可以选择object-oriented API进行开发。

matplotlib所绘图形的层次结构

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

关于Canvas对象Figure对象Axes对象的结构如下图所示。

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

相关推荐
卷无止境9 分钟前
LangExtract:让LLM从杂乱文本中"抠"出结构化数据的开源工具
后端·python
栈溢出的浪漫14 分钟前
码界领航:Python拓界-机器学习Web跨平台
python·机器学习·跨平台·web开发·个人项目
卷无止境20 分钟前
软件复杂度:那些让代码变得难以理解的东西,到底能不能量化?
后端·python
老白干2 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
笨鸟先飞,勤能补拙9 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能10 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂10 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study11 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境11 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境12 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python