Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
1. Matplotlib中pyplot的基础语法
1.绘图流程:
文章图片
1.1 创建画布与创建子图
第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
文章图片
如果 numRows, numCols 和 plotNum 这三个数都小于 10 的话, 可以把它们缩写为一个整数, 例如 subplot(333) 和 subplot(3,3,3) 是相同的,也就是说逗号可以省略。
subplot(3,3,3) :三行三列第三幅图
import matplotlib.pyplot as pltsubplot(numRows, numCols, plotNum)
'''图表的整个绘图区域被分成 numRows 行和 numCols 列
然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1
plotNum 参数指定创建的 Axes 对象所在的区域'''
多图画在一个画布上:
#!encoding=utf-8import matplotlib.pyplot as plt
import numpy as np# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef fun(x):
return np.exp(x) * np.cos(2 * np.pi * x)def fuc(y):
return y ** 2a = np.arange(0, 5, 0.5)
b = np.arange(0, 5, 0.5)
c = [33.11, 52.46, 14.43]plt.figure(figsize=(6, 6))plt.subplot(3, 2, 1)# 三行两列
plt.title('第一幅')
plt.plot(a, fun(a), '*-',
b, fuc(b), 'r--')
plt.legend(['a', 'b'])plt.subplot(3, 2, 2)
plt.title('第二幅')
plt.bar([1, 2, 3, 4, 5], [7, 2, 3, 6, 10], color='k', width=0.5)plt.subplot(3, 2, 3)
plt.title('第三幅')
plt.pie(c, explode=[0.01, 0.05, 0.03],labels=['鸡', '鸭', '鱼'], autopct='%.2f %%')plt.subplot(3, 2, 4)
plt.title('第四幅')
plt.plot(a, a, 'o',
b, b, '4')
plt.legend(['a', 'b'])plt.subplot(3, 1, 3)# 三行一列
plt.title('第五幅')
plt.plot(a, a, 'o--',
c, c, '4--')
plt.legend(['a', 'b'])plt.savefig('test.png')
plt.show()
文章图片
分析:
文章图片
1.2 添加画布内容
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,无先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
文章图片
1.3 图形的save和show
文章图片
Code:
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库plt.figure(figsize=(6, 6))# 设置画布大小
a = np.arange(15)# 创建数组a
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('绘图基础及常用参数')# 设置画布标题
# 画图
plt.plot(a, np.cos(a))
plt.plot(a, np.sin(a))
plt.legend(['cos x', 'sin x'])# 指定当前图形的标签
plt.savefig('../images/1.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
文章图片
获取路径下图片:
import ospath = os.listdir('../images/')
print('路径下图片:', path)
2. 通过绘图分析特征间关系
1.散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。
文章图片
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库x = np.array([1, 2, 3, 4, 5])
y = np.array([13, 19, 32, 45, 15])
plt.figure(figsize=(6, 6))# 设置画布大小
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('散点图')# 设置画布标题
plt.xlabel("x 轴")
plt.ylabel("y 轴")
# 画图
plt.scatter(x, y)
plt.savefig('../images/7.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
2.折线图(line chart)是一种将数据点按照顺序连接起来的图形。可以看作是将散点图,按照x轴坐标顺序连接起来的图形。主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。
文章图片
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库plt.figure(figsize=(6, 6))# 设置画布大小
a = np.arange(15)# 创建数组a
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('折线图')# 设置画布标题
# 画图
plt.plot(a, np.cos(a))
plt.plot(a, np.sin(a))
plt.legend(['cos x', 'sin x'])# 指定当前图形的标签
plt.savefig('../images/1.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
color参数的8种常用颜色的缩写:
文章图片
3.直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。
文章图片
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库a = np.array([22, 87, 5])
x = np.array([1,2,3])
plt.figure(figsize=(6, 6))# 设置画布大小
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('折线图')# 设置画布标题
plt.xlabel("x 轴")
plt.ylabel("y 轴")
# 画图
plt.bar(x, a, align='center')
plt.xticks(x, ['1', '2', '3'])
plt.savefig('../images/5.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
4.饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。
文章图片
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库a = np.array([23, 47, 30])
plt.figure(figsize=(6, 6))# 设置画布大小
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('饼状图')# 设置画布标题
# 画图
plt.pie(a, autopct='%.2f %%', explode=[0.1, 0, 0], labels=['Python', 'Java', 'C++'], labeldistance=1.4)
plt.savefig('../images/6.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
5.箱线图也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较。
文章图片
# -- coding:utf-8 --
import numpy as np# 导入numpy模块:数学库
import matplotlib.pyplot as plt# 导入matplotlib模块:绘图库y = np.array([13, 19, 32, 45, 15])
plt.figure(figsize=(6, 6))# 设置画布大小
# 设置字体,防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.title('箱线图')# 设置画布标题
# 画图
plt.boxplot(y)
plt.savefig('../images/8.png')# 保存绘制的图片
plt.show()# 在当前设备显示图形
【Python数据分析|Python数据分析之Matplotlib的应用】绘图函数及对应的图形:
绘图函数 | 图形 |
---|---|
scatter函数:matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs) | 文章图片 |
plot函数:matplotlib.pyplot.plot(*args, **kwargs) | 文章图片 |
bar函数:matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = https://www.it610.com/article/None,** kwargs ) | 文章图片 |
pie函数:matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … ) | 文章图片 |
boxplot函数:matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … ) # 第一个参数是数据,notch是是否带有缺口,labels是标签,meanline是否带有均值线 | 文章图片 |
推荐阅读
- Python每日一练|Python每日一练(牛客新题库)——第20天(字典练习)
- java|几个前端浏览器调试小技巧
- 《告别Bug》|TypeError(List indices must be integers or slices , not str)
- 实现 classmethod装饰器
- 目标检测|【目标检测】yolo系列(从yolov1到yolov5之YOLOv5训练自己数据集(v6.0))
- 大数据|经济下行基建托底,偶数湖仓一体打造坚实新基建数字底座
- Python|在Python中寻找数据异常值的三种方法
- Python|Python中四个不常见的小技巧
- #|pandas的简单使用(数据统计)