Matplotlib绘制图表

Matplotlib 库功能十分强大,内容也非常多,本篇简单介绍一下各种常用图表的绘制。

Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。
Matplotlib试图让简单易事的事情成为可能。你只需几行代码即可生成绘图,直方图,功率谱,条形图,误差图,散点图等。


线型图

把所有的点连接起来,可以指定连线的样式和颜色等。

每个点的坐标不是一个个输入,而是把所有 x 坐标放在一个数组里面,所有的 y 坐标放在另一个数组里面,然后再分组输入。这个需要注意一下,不能搞混。

import matplotlib.pyplot as plt

# 创建一个图形窗口
plt.figure()
# 绘制连接点(0, 0)、(3, 6)和(8, 10)的折线
plt.plot([0, 3, 8], [0, 6, 10])
# x轴标签
plt.xlabel("x")
# y轴标签
plt.ylabel("y")
# 标题
plt.title("A simple plot")
plt.show()

看图:
在这里插入图片描述

散点图

把每个点显示出来,操作与线型图类似,xy 分两组输入。

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
# 30个随机分布的横坐标,位于[0, 1]之间
x = np.random.rand(30)
# 30个随机分布的纵坐标,位于[0, 1]之间
y = np.random.rand(30)
# 绘制散点图,透明度为0.6
plt.scatter(x, y, alpha=0.6)
plt.show()

看图:
在这里插入图片描述

条形图

条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)是固定的,主要用于展示分类数据。要与直方图区分开来,需要注意。

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
# x,y的数值
x = np.arange(5)
y = np.random.randint(low=0, high=100, size=5)
# 每条数值的颜色
colors = np.random.rand(5 * 3).reshape(5, -1)
# x轴数值标签
labels = ['one', 'two', 'shree', 'four', 'five']
# 标题
plt.title("Bar Chart")
# 绘制条形图
plt.bar(x, y, alpha=0.8, color=colors, tick_label=labels)
plt.show()

看图:
在这里插入图片描述

直方图

直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率宽度则表示各组的组距,因此其高度与宽度均有意义。要与条形图区分开来,需要注意。

主要用于展示数据型数据,各矩形通常是连续排列

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
# 使随机数据可预测
np.random.seed(0)
# 均值和方差
loc, scale = 100, 20
# 输出100个正态分布的数据
a = np.random.normal(loc, scale, size=100)
# 绘制直方图,划分成15个范围
plt.hist(a,bins=15)
plt.show()

看图:
在这里插入图片描述

饼状图

划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。

数据和标签分两组输入。

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
# 每一块的值
data = np.random.rand(5) * 100
# 表格标签
labels = ['one', 'two', 'three', 'four', 'five']
# 绘制饼状图, 指定位数
plt.pie(data, labels=labels, autopct='%1.1f%%')
# x,y轴刻度设置一致,保证饼图为圆形
plt.axis('equal')
# 显示图例
plt.legend()
plt.show()

看图:
在这里插入图片描述


Matplotlib 的中文文档:https://www.matplotlib.org.cn/