还不会Python数据可视化? 手把手教你用 Matplotlib 实现数据可视化(珍藏版上)

简介: 还不会Python数据可视化? 手把手教你用 Matplotlib 实现数据可视化(珍藏版上)

介绍

在使用机器学习方法解决问题的过程中,一定会遇到需要针对数据进行绘图的场景。


Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型、简单的绘图方式以及完善的接口文档,深受 Python 工程师、科研学者、数据工程师等各类人士的喜欢


Matplotlib 拥有着十分活跃的社区以及稳定的版本迭代,当我们在学习机器学习的课程时,掌握 Matplotlib 的使用无疑是最重要的准备工作之一


在使用 Notebook 环境绘图时,需要先运行 Jupyter Notebook 的魔术命令 %matplotlib inline


这条命令的作用是将 Matplotlib 绘制的图形嵌入在当前页面中。而在桌面环境中绘图时,不需要添加此命令,而是在全部绘图代码之后追加 plt.show()



简单图形绘制


使用 Matplotlib 提供的面向对象 API,需要导入 pyplot 模块,并约定简称为 plt


快速上手

import  matplotlib.pyplot as plt
%matplotlib inline
plt.plot([1, 2, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1])

8.png


前面,我们从 Matplotlib 中导入了 pyplot 绘图模块,并将其简称为 plt


pyplot 模块是 Matplotlib 最核心的模块,几乎所有样式的 2D 图形都是经过该模块绘制出来的



自定义X/Y轴

plt.plot() 是 pyplot 模块下面的直线绘制(折线图)方法类. 示例中包含了一个 [1, 2, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1] 列表,Matplotlib 会默认将该列表作为 y 值,而 x 值会从 0 开始依次递增。


当然,如果你需要自定义横坐标值,只需要传入两个列表即可


plt.plot([1,2,3],
         [1, 2, 3])


1.png



图表实现

汇总

上面演示了如何绘制一个简单的折线图


那么,除了折线图,我们平常还要绘制柱状图、散点图、饼状图等等. 这些图应该怎样绘制呢?


pyplot 模块中 pyplot.plot 方法是用来绘制折线图的


你应该会很容易联想到,更改后面的方法类名就可以更改图形的样式。


的确,在 Matplotlib 中,大部分图形样式的绘制方法都存在于 pyplot 模块中。例如:image.png

下面,我们参考折线图的绘制方法,尝试绘制几个简单的图形。



正弦曲线图

matplotlib.pyplot.plot(*args, **kwargs) 方法严格来讲可以绘制线形图或者样本标记


其中,*args 允许输入单个 y 值或 x,y 值


例如,我们这里绘制一张自定义 x,y 的正弦曲线图


import numpy as np
# 在 -2PI 和 2PI 之间等间距生成 1000 个值,也就是 X 坐标
X = np.linspace(-2*np.pi, 2*np.pi, 1000)
# 计算 y 坐标
y = np.sin(X)
# 向方法中 `*args` 输入 X,y 坐标
plt.plot(X, y)

2.png


正弦曲线就绘制出来了。但值得注意的是,pyplot.plot 在这里绘制的正弦曲线,实际上不是严格意义上的曲线图,而在两点之间依旧是直线。


这里看起来像曲线是因为样本点相互挨得很近。



柱状图

柱形图 matplotlib.pyplot.bar(*args, **kwargs) 大家应该都非常了解了


这里,我们直接用上面的代码,仅把 plt.plot(X, y) 改成 plt.bar(X, y) 试一下

plt.bar([1,2,3],[1,2,3])

3.png



散点图

散点图 matplotlib.pyplot.scatter(*args, **kwargs) 就是呈现在二维平面的一些点,这种图像的需求也是非常常见的


比如,我们通过 GPS 采集的数据点,它会包含经度以及纬度两个值,这样的情况就可以绘制成散点图

# X,y 的坐标均有 numpy 在 0 到 1 中随机生成 1000 个值
X = np.random.ranf(1000)
y = np.random.ranf(1000)
# 向方法中 `*args` 输入 X,y 坐标
plt.scatter(X, y)

4.png


饼图

饼状图 matplotlib.pyplot.pie(*args, **kwargs) 在有限列表以百分比呈现时特别有用,你可以很清晰地看出来各类别之间的大小关系,以及各类别占总体的比例。


plt.pie([1, 2, 3, 4, 5])


5.png


量场图

量场图 matplotlib.pyplot.quiver(*args, **kwargs) 就是由向量组成的图像,在气象学等方面被广泛应用


从图像的角度来看,量场图就是带方向的箭头符号

X, y = np.mgrid[0:10, 0:10]
plt.quiver(X, y)

6.png


等高线图

中学学习地理的时候,我们就知道等高线了


等高线图 matplotlib.pyplot.contourf(*args, **kwargs) 是工程领域经常接触的一类图,它的绘制过程稍微复杂一些


# 生成网格矩阵
x = np.linspace(-5, 5, 500)
y = np.linspace(-5, 5, 500)
X, Y = np.meshgrid(x, y)
# 等高线计算公式
Z = (1 - X / 2 + X ** 3 + Y ** 4) * np.exp(-X ** 2 - Y ** 2)
plt.contourf(X, Y, Z)


7.png



图形样式

上面,我们绘制了简单的基础图形,但这些图形都不美观


我们已经知道了,线形图通过 matplotlib.pyplot.plot(*args, **kwargs) 方法绘出


其中,args 代表数据输入,而 kwargs 的部分就是用于设置样式参数了。



折线图

二维线形图 包含的参数 超过 40 余项,其中常用的也有 10 余项,选取一些比较有代表性的参数列举如下:

参数 含义
alpha= 设置线型的透明度,从 0.0 到 1.0
color=

设置线型的颜色

fillstyle= 设置线型的填充样式
linestyle= 设置线型的样式
linewidth= 设置线型的宽度
marker= 设置标记点的样式
…… ……


至于每一项参数包含的设置选项,大家需要通过 官方文档 详细了解


下面,我们重新绘制一个三角函数图形


# 在 -2PI 和 2PI 之间等间距生成 1000 个值,也就是 X 坐标
X = np.linspace(-2 * np.pi, 2 * np.pi, 1000)
# 计算 sin() 对应的纵坐标
y1 = np.sin(X)
# 计算 cos() 对应的纵坐标
y2 = np.cos(X)
# 向方法中 `*args` 输入 X,y 坐标
plt.plot(X, y1, color='r', linestyle='--', linewidth=2, alpha=0.8)
plt.plot(X, y2, color='b', linestyle='-', linewidth=2)

8.png

散点图

散点图也是相似的,它们的很多样式参数都是大同小异,需要大家阅读 官方文档 详细了解。

参数

含义

s=

散点大小

c= 散点颜色
marker= 散点样式
cmap= 定义多类别散点的颜色
alpha= 点的透明度
edgecolors= 散点边缘颜色


# 生成随机数据
x = np.random.rand(1000)
y = np.random.rand(1000)
colors = np.random.rand(1000)
size = np.random.normal(50, 60, 1000)
# 绘制散点图
plt.scatter(x, y, s=size, c=colors)

9.png

饼图

饼状图通过 matplotlib.pyplot.pie() 绘出


我们也可以进一步设置它的颜色、标签、阴影等各类样式

# 各类别标签
label = 'a','b','c','d'  
# 各类别颜色
color = 'r', 'g', 'r', 'g'
# 各类别占比
size = [1, 2, 3, 4]  
# 各类别的偏移半径
explode = (0, 0, 0, 0, 0.2)  
# 绘制饼状图
plt.pie(size, colors=color, explode=explode,
        labels=label, shadow=True, autopct='%1.1f%%')
# 饼状图呈正圆
plt.axis('equal')

10.png



目录
相关文章
|
16天前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
1月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
28天前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
1月前
|
数据采集 搜索推荐 数据可视化
基于python大数据的商品数据可视化及推荐系统
本系统基于Python、Django与ECharts,构建大数据商品可视化及推荐平台。通过爬虫获取商品数据,利用可视化技术呈现销售趋势与用户行为,结合机器学习实现个性化推荐,助力电商精准营销与用户体验提升。
|
1月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
2月前
|
搜索推荐 算法 数据可视化
基于python大数据的招聘数据可视化及推荐系统
本研究聚焦于基于协同过滤的就业推荐系统设计与实现。随着就业压力增大和信息技术发展,传统求职方式面临挑战。通过分析用户行为与职位特征,协同过滤技术可实现个性化职位推荐,提升求职与招聘效率。研究涵盖系统架构、数据采集、算法实现及可视化展示,旨在优化就业匹配,促进人才与岗位精准对接,助力就业市场智能化发展。
|
4月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
132 0
Python 3D数据可视化:7个实用案例助你快速上手
|
5月前
|
人工智能 数据可视化 数据挖掘
如何使用Python进行数据可视化
Python是一种强大的编程语言,广泛应用于数据分析与可视化。常见的可视化库有Matplotlib、Seaborn和Plotly等。数据可视化通常包括以下步骤:准备数据(如列表或从文件读取)、选择合适的工具、绘制图表、优化样式(如标题和标签)以及保存或分享结果。例如,使用Matplotlib可通过简单代码绘制线图并添加标题和轴标签。实际应用中,可通过调整颜色、样式等进一步优化图表,甚至使用交互式工具提升效果。总之,Python的丰富工具为数据可视化提供了强大支持。
182 5
|
10月前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
322 9
|
10月前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
582 3

推荐镜像

更多