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

本文涉及的产品
简介: 数据挖掘与机器学习中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()

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4月前
|
数据可视化 数据挖掘 大数据
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
55 0
|
4月前
|
数据可视化 数据挖掘 Python
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
85 0
|
4月前
|
资源调度 自然语言处理 数据可视化
【数据分析与可视化】Matplotlib中十大绘图模型的讲解及实现(图文解释 附源码)
【数据分析与可视化】Matplotlib中十大绘图模型的讲解及实现(图文解释 附源码)
67 1
|
1月前
|
机器学习/深度学习 算法 PyTorch
基于Pytorch的机器学习Regression问题实例(附源码)
基于Pytorch的机器学习Regression问题实例(附源码)
32 1
|
1月前
|
数据采集 前端开发 C++
Python通过matplotlib动态绘图实现中美GDP历年对比趋势动图
随着中国的各种实力的提高,经常在各种媒体上看到中国与各个国家历年的各种指标数据的对比,为了更清楚的展示历年的发展趋势,有的还做成了动图,看到中国各种指标数据的近年的不断逆袭,心中的自豪感油然而生。今天通过Python来实现matplotlib的动态绘图,将中美两国近年的GDP做个对比,展示中国GPD对美国的追赶态势,相信不久的将来中国的GDP数据将稳超美国。
52 2
|
2月前
|
机器学习/深度学习 数据采集 自然语言处理
编写员工聊天监控软件的机器学习模块:Scikit-learn在行为分析中的应用
随着企业对员工行为监控的需求增加,开发一种能够自动分析员工聊天内容并检测异常行为的软件变得愈发重要。本文介绍了如何使用机器学习模块Scikit-learn来构建这样一个模块,并将其嵌入到员工聊天监控软件中。
170 3
|
3月前
|
机器学习/深度学习 算法 Python
机器学习 - [源码实现决策树小专题]决策树中,信息增益、信息增益率计算以及最佳特征挑选的Python实现
机器学习 - [源码实现决策树小专题]决策树中,信息增益、信息增益率计算以及最佳特征挑选的Python实现
45 0
|
3月前
|
机器学习/深度学习 JavaScript 前端开发
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
39 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法
百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历
百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历
144 1
|
4月前
|
机器学习/深度学习 数据可视化 API
Matplotlib从入门到精通01-matplotlib简介与绘图基本流程
Matplotlib从入门到精通01-matplotlib简介与绘图基本流程
Matplotlib从入门到精通01-matplotlib简介与绘图基本流程