Python数据分析|Python数据分析之Matplotlib的应用

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
1. Matplotlib中pyplot的基础语法
1.绘图流程:
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

1.1 创建画布与创建子图
第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

如果 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()

Python数据分析|Python数据分析之Matplotlib的应用
文章图片

分析:
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

1.2 添加画布内容
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,无先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

1.3 图形的save和show
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

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()# 在当前设备显示图形

Python数据分析|Python数据分析之Matplotlib的应用
文章图片

获取路径下图片:
import ospath = os.listdir('../images/') print('路径下图片:', path)

2. 通过绘图分析特征间关系
1.散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

# -- 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改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

# -- 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种常用颜色的缩写:
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

3.直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

# -- 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)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

# -- 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.箱线图也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较。
Python数据分析|Python数据分析之Matplotlib的应用
文章图片

# -- 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) Python数据分析|Python数据分析之Matplotlib的应用
文章图片
plot函数:matplotlib.pyplot.plot(*args, **kwargs) Python数据分析|Python数据分析之Matplotlib的应用
文章图片
bar函数:matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = https://www.it610.com/article/None,** kwargs ) Python数据分析|Python数据分析之Matplotlib的应用
文章图片
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, … ) Python数据分析|Python数据分析之Matplotlib的应用
文章图片
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数据分析之Matplotlib的应用
文章图片

    推荐阅读