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轴的坐标系。

相关推荐
java1234_小锋2 分钟前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落41 分钟前
Python学习之装饰器
开发语言·python·学习
XiaoMu_0011 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL1 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
我没想到原来他们都是一堆坏人2 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
总有刁民想爱朕ha3 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
人衣aoa4 小时前
Python编程基础(八) | 类
开发语言·python
大模型真好玩4 小时前
深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
人工智能·python·mcp
百锦再4 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame
掘技术5 小时前
十个 Python 案例分享
python