数据挖掘与机器学习中Matplotlib绘图模块详细讲解(超详细 附源码)

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 数据挖掘与机器学习中Matplotlib绘图模块详细讲解(超详细 附源码)

需要完整文件和PPT请点赞关注收藏后评论区留言私信~~~

Matplotlib是Python的一套基于NumPy的绘图工具包。Matplotlib提供了一整套在Python下实现的类 Matlab的纯 Python的第三方库,其风格跟 Matlab相似,同时也继承了Python简单明了的优点。

在Jupyter Notebook中导入语句如下% matplotlib notebook

import  matplotlib.pyplot as plt

1.创建画布与子图

Matplotlib所绘制的图位于图片(Figure)对象中,绘图常用方法见表.

代码如下

import matplotlib.pyplot as plt
fig = plt.figure()
#不能使用空白的figure绘图,需要创建子图
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
ax1.plot([1.5,2,3.5,-1,1.6])

创建子图调整子图周围的间距。

fig,axes = plt.subplots(2,2,sharex = True,sharey = True)
for i in range(2):
     for j in range(2):
      axes[i,j].hist(np.random.randn(500),bins =50,color='k',alpha= 0.5)
plt.subplots_adjust(wspace=0,hspace=0)

 

2.添加画布内容

在画布上绘制图形,需要设置绘图的一些属性,如标题、轴标签等。

data = np.arange(0,np.pi*2,0.01)
fig1 = plt.figure(figsize = (9,7),dpi = 90)  #确定画布大小
ax1 = fig1.add_subplot(1,2,1) #绘制第1幅子图
plt.title('lines example')
plt.xlabel('X')
plt.ylabel('Y')
plt.xlim(0,1)
plt.ylim(0,1)
plt.xticks([0,0.2,0.4,0.6,0.8,1])
plt.yticks([0,0.2,0.4,0.6,0.8,1])
plt.plot(data,data**2)
plt.plot(data,data**3)
plt.legend(['y = x^2','y = x^3'])
ax1 = fig1.add_subplot(1,2,2) #绘制第2幅子图
plt.title('sin/cos')
plt.xlabel('X')
plt.ylabel('Y')
plt.xlim(0,np.pi*2)
plt.ylim(-1,1)
plt.xticks([0,np.pi/2,np.pi,np.pi*3/2,np.pi*2])
plt.yticks([-1,-0.5,0,0.5,1])
plt.plot(data,np.sin(data))
plt.plot(data,np.cos(data))
plt.legend(['sin','cos'])
plt.show()

3. 绘图的保存与显示

4.设置pyplot的动态rc参数

Matplotlib配置了配色方案和默认设置,主要用来准备用于发布的图片。有两种方式可以设置参数,即全局参数定制和rc设置方法。

查看matplotlib的rc参数: import matplotlib as plt print(plt.rc_params())

1. 全局参数定制 Matplotlib的全局参数可以通过编辑其配置文件设置。

2. rc参数设置 使用Python编程进行配置修改rc参数

rc参数设置示例

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
np.random.seed(719)
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
ax.legend(loc = 'best')

可以用set_xticks设置刻度,用set_xticklabels改变刻度,设置刻度的旋转角度及字体等,如ax.set_xticklabels(['x1','x2','x3','x4','x5'],rotation = 30,fontsize = 'large')。

文本注解 绘图时有时需要在图表中加文本注解,Python通过text函数在指定的位置(x,y)加入文本注解,也可以利用annotate()完成指向型注释。

文本注解

绘图时有时需要在图表中加文本注解,Python通过text函数在指定的位置(x,y)加入文本注解,也可以利用annotate()完成指向型注释

绘制曲线图并标注

import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
ax1=fig.add_subplot(121)
t=np.arange(0.0,5,0.01)
s=np.cos(2*np.pi*t)
line,=ax1.plot(t,s,lw=2)
bbox=dict(boxstyle='round',fc='white')
ax1.annotate('local max',xy=(2,1),xytext=(3,1.5),arrowprops=dict
(facecolor='black',edgecolor='red',headwidth=7,width=2),bbox=bbox)
bbox_prop=dict(fc='white')
ax1.set_xlabel('asix-X',bbox=bbox_prop)
ax1.set_ylim(-2,2)
ax1.text(1,1,'max')
ax2=fig.add_subplot(122)
ax2.set_ylim(-4,4)
ax2.set_xlim(-4,4)
bbox=dict(boxstyle='round',ec='red',fc='white')
ax2.text(-2,0,'$y=sin(x)$',bbox=bbox)
ax2.text(0,-2,'$y=cos(x)$',bbox=dict(boxstyle='square',facecolor='white',ec='black'),rotation=45)
ax2.grid(ls=":",color='gray',alpha=0.5)
#设置水印(带方框的水印)
ax2.text(-2,2,'NWNU',fontsize=20,alpha=0.8,color='gray',bbox=dict(fc="white",boxstyle='round',edgecolor='gray',alpha=0.3))
plt.show()

5.pyplot中的常用绘图

1. 折线图

折线图(Line Chart)是一种将数据点按照顺序连接起来的图形。matplotlib.pyplot.plot(*args, **kwargs)

折线图绘制代码如下

x1 = np.arange(0, 30)
plt.plot(x1,x1*2,marker='o',color='g')
plt.plot(x1,x1*3.5,marker='+',color='b')
plt.tick_params(axis='x',labelsize=14,rotation=30)
plt.tick_params(axis='y',labelsize=13)
plt.show()

2. 散点图

散点图(Scatter Diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。

scatter方法格式: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)

fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 
x1 = np.arange(1,30)
y1 = np.sin(x1)
ax1 = plt.subplot(1,1,1)
plt.title('散点图')
plt.xlabel('X')
plt.ylabel('Y')
lvalue = x1
ax1.scatter(x1,y1,c = 'r',s = 100,linewidths = lvalue,marker = 'o')
plt.legend('x1')
plt.show()

 

3.直方图

直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。

绘制直方图函数bar格式: matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs )

fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False  
x = np.arange(1,6)
Y1 = np.random.uniform(1.5,1.0,5)
Y2 = np.random.uniform(1.5,1.0,5)
plt.bar(x,Y1,width = 0.35,facecolor = 'lightskyblue',edgecolor = 'white')
plt.bar(x+0.35,Y2,width = 0.35,facecolor = 'yellowgreen',edgecolor = 'white')
plt.show()

 

4. 饼图

饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。

绘制饼图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, …

plt.figure(figsize = (6,6))
ax = plt.axes([0.1,0.1,0.8,0.8])
labels = 'Springs','Summer','Autumn','Winter'
x = [15,30,45,10]
explode = (0.05,0.05,0.05,0.05)
#控制分离的距离,默认饼图不分离
plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct = '%1.1f%%')
#qutopct在图中显示比例值,注意值的格式
plt.title('Rany days by season')
plt.tick_params(labelsize = 12)
plt.show()

5. 箱线图

箱线图(Boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … )

np.random.seed(2)  #设置随机种子
df = pd.DataFrame(np.random.rand(5,4),
columns = ['A', 'B', 'C', 'D'])
#生成0-1之间的5*4维度数据并存入4列DataFrame中
plt.boxplot(df)
plt.show()

6. 概率图

概率图模型是图灵奖获得者Pearl提出的用来表示变量间概率依赖关系的理论。正态分布又名高斯分布。正态概率密度函数normpdf(x,mu,sigma),其中,x为向量,mu为均值,sigma为标准差。

from scipy.stats import norm
fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei'] 
np.random.seed(1587554)
mu = 100
sigma = 15
x = mu+sigma*np.random.randn(437)
num_bins = 50
n,bins,patches = ax.hist(x,num_bins,density = 1)
y=norm.pdf(bins,mu,sigma)
ax.plot(bins,y,'--')
fig.tight_layout()
plt.show()

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】金山办公2020校招大数据和机器学习算法笔试题
金山办公2020校招大数据和机器学习算法笔试题的解析,涵盖了编程、数据结构、正则表达式、机器学习等多个领域的题目和答案。
106 10
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
【数据挖掘】2022年深信服科技机器学习工程师笔试
总结了深信服科技机器学习工程师笔试中的几道题目及其解答,涉及数据结构、机器学习评估指标和过拟合缓解方法等内容。
94 1
|
5月前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
89 1
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
51 2
|
3月前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
3月前
|
API Python
30天拿下Python之matplotlib模块
30天拿下Python之matplotlib模块
19 0
|
4月前
|
机器学习/深度学习 存储 人工智能
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
本文是关于2022-2023年知能科技公司机器学习算法工程师岗位的秋招笔试题,包括简答题和编程题,简答题涉及神经网络防止过拟合的方法、ReLU激活函数的使用原因以及条件概率计算,编程题包括路径行走时间计算和两车相向而行相遇时间问题。
79 2
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
|
4月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
文章汇总并解析了百度机器学习/数据挖掘工程师/自然语言处理工程师历史笔试题目,覆盖了多分类任务激活函数、TCP首部确认号字段、GMM-HMM模型、朴素贝叶斯模型、SGD随机梯度下降法、随机森林算法、强连通图、红黑树和完全二叉树的高度、最长公共前后缀、冒泡排序比较次数、C4.5属性划分标准、语言模型类型、分词算法、贝叶斯决策理论、样本信息熵、数据降维方法、分箱方法、物理地址计算、分时系统响应时间分析、小顶堆删除调整等多个知识点。
46 1
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
|
4月前
|
机器学习/深度学习 人工智能 算法
【数据挖掘】2022年2023届秋招奇虎360机器学习算法工程师 笔试题
本文提供了奇虎360公司2022年秋招机器学习算法工程师岗位的笔试题内容,包括选择题和编程题,涉及概率统计、数据结构、机器学习、计算机组成原理等多个领域。
102 5
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】2022年2023届秋招宏瓴科技公司机器学习算法工程师 笔试题
关于宏瓴科技有限公司2022-2023年秋招机器学习算法工程师岗位的笔试题目及作者个人对部分题目的解答尝试,涉及贝叶斯误差和贝叶斯最优分类器的概念、贝叶斯误差的重要性和估算方法,以及如何有效利用训练集和测试集进行深度学习模型训练的数据集划分策略。
62 4

热门文章

最新文章