如果将文本数据和图表数据放在一起,人类的思维模式可能更适合于理解图表数据,因为图表数据更加直观、形象。使用图表来表示数据的方法就叫做数据可视化。可视化是在整个数据挖掘的关键辅助工具,可以帮助我们清晰的理解数据,从而调整我们的分析方法。通过可视化,能将数据更直观的呈现出来,使数据更加客观、更具说服力。
常用的数据可视化图表主要有以下五种:
什么是matplotlib
Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组(NumPy 是 Python 科学计算的软件包,ndarray 则是 NumPy 提供的一种数组结构)来绘制 2D 图像。
matplotlib 是 Python 中类似于 matlab的绘图工具,是一个常用的 2D 绘图库,当然它也提供了3D绘图接口。如果有matlab的使用经验,学习matplotlib还是很快的。matplotlib 提供了一套API来支持面向对象绘图,配合 Python GUI 工具包(比如 PyQt,WxPython、Tkinter)在应用程序中嵌入图形。与此同时,matplotlib也支持以脚本的形式在 Python、IPython Shell、JupyterNotebook 以及 Web 应用的服务器中使用,非常方便。作为Python 中最受欢迎的数据可视化软件包之一,matplotlib支持跨平台运行,它通常与NumPy、Pandas一起使用,是数据分析中不可或缺的重要工具之一。
①脚本层scripting
脚本层是matplotlib 结构中的最顶层。我们编写的绘图代码大部分代码都在该层运行,它的主要工作是负责生成图形与坐标系。
②美工层artist
美工层是结构中的第二层,它提供了绘制图形的元素时的给各种功能,例如,绘制标题、轴标签、坐标刻度等。
③后端层backend
后端层是 matplotlib 最底层,它定义了三个基本类,首先是 FigureCanvas(图层画布类),它提供了绘图所需的画布,其次是 Renderer(绘图操作类),它提供了在画布上进行绘图的各种方法,最后是 Event(事件处理类),它提供了用来处理鼠标和键盘事件的方法。
Matplotlib的图像组成如下图所示
- Figure:指整个图形,可以把它理解成一张画布,它包括了所有的元素,比如标题、轴线等;
- Axes:绘制 2D 图像的实际区域,也称为轴域区,或者绘图区;
- Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小、轴标签(指 x 轴,y轴)和刻度标签;
- Artist:在画布上看到的所有元素都属于 Artist 对象,比如文本对象(title、xlabel、ylabel)、Line2D 对象(用于绘制2D图像)等。
安装matplotlib
matplotlib是专门用于开发2D图表(包括3D图表),以渐进、交互式方式实现数据可视化。如果你用过matlab的话,可以简单理解为和matlab有类似的功能。
安装matplotlib,直接在命令行输入(在cmd命令行输入py -0p可查看python解释器安装路径,如果pycharm提示找不到python.exe可能就是解释器路径错误)
代码语言:javascript复制pip3 install matplotlib
安装后,便可以在jupyter notebook或者pycharm等其他环境使用进行数据可视化
在pyharm中使用matplotlib模块的时候,可能会出现报错
解决方法如下
首先点击“文件-设置”
进入后,选择“项目-project interpreter”,点击加号
在弹框中搜索matplotlib,并安装即可
至此,安装成功。
另一个比较好的安装方法是通过下载 Python 的 Anaconda 发行版,Anaconda 是一个开源的 Python 发行版本,其包含了 Python、NumPy、Matplotlib 等180多个科学包及其依赖项。
首先,进入 Anaconda 的官方网站(https://www.anaconda.com/download),然后单击“Download”按钮,如下图所示:
根据自己的Python解释器的版本下载相应版本即可。并且Anconda 中提供了一个交互式笔记本 Jupyter。
matplotlib.pyplot API介绍
Matplotlib 中的 pyplot 模块是一个类似命令风格的函数集合,和 MATLAB 非常相似。pyplot 模块提供了可以用来绘图的各种函数,比如创建一个画布,在画布中创建一个绘图区域,或是在绘图区域添加一些线、标签等。主要如下:
matplotlib绘图示例
代码语言:javascript复制import matplotlib.pyplot as plt
import random
# 通过折线图展示温度变化
# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 构造x轴刻度标签
x_ticks_label = ["11:{}".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(40)
# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
# 添加x轴、y轴描述信息及标题
plt.xlabel("time")
plt.ylabel("temperature")
plt.title("Temperature variation chart", fontsize=20)
# 绘制折线图
plt.plot(x, y_shanghai)
# 保存图片到指定路径 plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
# plt.savefig("test.png")
# 显示图像
plt.show()
结果如下
我们也可以通过参数设置线的风格