Matplotlib数据可视化基础及绘画图

一、概述

       在Matplotlib 中应用较广的是matplotlib.pyplot(简称为pyplot)模块。在pyplot 模块中,各种状态可跨函数调用和保存,以便跟踪诸如当前图形和绘图区域等,并且绘图函数始终指向当前轴域(x轴和y轴所围成的区域)。除Matplotlib之外,常用的数据可视化库还有scabom 库和pyecharts 库。scaborn库是基于Matplotlib的Python 可视化库,它提供了一种高度交互式的界面。

       本章将介绍使用Matplotlib库绘制图形的基础语法和常用参数,以及使用Matplotib库绘制进阶图形的方法。

       学习使用pyplot 模块绘制各类图形的基础语法,是绘制图形的前提每一幅图的绘制都会涉及到为数不少的参数,虽然多数参数都会有默认值,但是很多参数在使用时必须手动设置,才能够更好地辅助用户绘制图形。本节将介绍使用Matplotlib库绘制常见的散点图、折线图、柱形图饼图和箱线图的方法。

1、熟悉pyplot 绘图基础语法与常用参数

       若使用Matplotlib 库进行图形的绘制,则需要先了解pyplot 模块的基础语法及其动态的rc参数的设置。大部分的pyplot图形绘制都遵循一个流程,这个流程主要分为3个部分。b773005f116a4855b0cffea6233f2c40.png

二、掌握pyplot基础语法

      掌握pyplot模块的基础语法的使用,可从创建画布与创建子图、添加画布内容、保存与显示图形3个部分进行。

(1)创建画布与创建

第一部分的主要作用是构建出一张空白的画布,可以选择是否将整个画布划分为多个部分,方便在同一个图上绘制多个图形。当只需要绘制一个简单的图形时,这部分内容可以省略。在pyplot中,创建画布与创建并选中子图的常用函数/方法及其作用如表5-1所示,为了方便读者查看,matplotlib.pyplot模块简写为plt。

创建画布与创建并选中子图的常用函数/方法及其作用

函数/方法名称函数/方法作用
plt.figure创建一张空白画布,可以指定画布大小等
figure.add_subplot()创建并选中子图,可以指定子图的行数、列数和选中图片的编号

(2)添加画布内容

第二部分是绘图的主体部分。其中的添加标题、添加坐标轴标签、绘制图形等步骤是没有先后顺序的,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。在 pyplot 中添加各类标签和图例的常用函数及其作用如表5-2所示。

添加各类标签和图例的常用函数及其作用

函数名称函数作用
plt.title在当前图形中添加标题,可以指定标题的名称、位置、颜色、字号等参数
plt.xlabel在当前图形中添加x轴标签,可以指定位置、颜色、字号等参数
plt.ylabel在当前图形中添加y轴标签,可以指定位置、颜色、字号等参数
plt.xlim指定当前图形x轴的范围,只能确定一个数值区间,无法使用字符串标识
plt.ylim指定当前图形y轴的范围,只能确定一个数值区间,无法使用字符串标识
plt.xticks获取或设置x轴的当前刻度位置和标签
plt.yticks获取或设置y轴的当前刻度位置和标签
plt.legend指定当前图形的图例,可以指定图例的大小、位置、标签

(3)保存与显示图形

第三部分主要用于保存和显示图形,这部分内容的常用函数只有两个,并且参数很少。

保存与显示图形的常用函数及其作用

函数名称函数作用
plt.savefig保存绘制的图形,可以指定图形的分辨率、边缘的颜色等参数
 plt.show在本机显示图形

较简单的绘图可以省略第一部分,然后直接在默认的画布上进行图形绘制,如图所示。

60f32452797841149b97fe423c66328d.png32070bd471494b3888a33aed3dc76850.png

注:具体绘图的函数 plt.plot 在此处不要求掌握,此处主要掌握基础图形绘制的流程代码5-1是一个简单的不含子图绘制的标准绘图流程的示例。子图绘制本质上是多个基础图形绘制过程的叠加,即分别在同一幅画布的不同子图上绘制图形,如图所示。

cc5d845789a04d5aa1057c0575557036.png

ea0a072a15d1429ab4916a0b31d1253e.png

73a7fcc191d740c6aca8902363265b51.png

注:具体绘画的函数plt.plot在此处不要求掌握,此处主要掌握包含子图的图形绘制的流程。

三、使用Matplotlib绘制进阶图形

1.绘制散点图

        散点图(Scater Diagram)又称为散点分布图,是以一个特征为横坐标,以另一个特征为纵坐标,利用坐标点(散点)的分布形态反映这两个特征间的统计关系的一种图形。值由点在图形中的位置表示,类别由图形中的不同标记表示,通常用于比较跨类别的数据。散点图可以提供两类关键信息,具体内容如下。

(1)特征之间是否存在数值或数量的关联趋势,关联趋势是线性的还是非线性的。

(2)如果某一个点或某几个点偏离大多数点,那么这些点就是离群值,通过散点图可以一目了然,从而可以进一步分析这些离群值是否在建模分析中产生较大的影响。

散点图可通过散点的疏密程度和变化趋势表示两个特征的数量关系。如果有3个特征,且其中一个特征为类别型特征,散点图可改变该特征的点的形状或颜色,即可了解两个数值型特征和这个类别型特征之间的关系。

pyplot 中绘制散点图的函数为scatter,scatter 函数的基本使用格式如下。

matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,cmap=None,
norm=None,vmin=None,vmax=None,linewidths=None,  *,edgecolors=None,
alpha=None,plotnonfinite=False,data=None,**kwargs)

scatter 函数的常用参数及其说明如表所示

参数名称参数说明
x,y接收 float或aray。表示x轴和y轴对应的数据。无默认值
S接收 float或array。表示指定点的大小,若传入一维数组,则表示每个点的大小。默认为None
c接收颜色或 aray。表示指定点的颜色,若传入一维数组,则表示每个点的颜色。默认为None
marker接收特定str。表示绘制的点的类型。默认为None
alpha接收 float。表示点的透明度。默认为None

基于表5-8的劳动力与就业人员数据绘制2001年——2019年劳动力人数散点图,如图所示。

设置字体格式代码

plt.rcParams['font.sans-serif']='SimHei'

设置正常显示符号(比如符号)代码为

plt.rcParams['axes.unicode_minus']=False

 e170febc33bd4150833f36ffcf1eb537.png78264f5629f74c0e85ca90c86051db8d.pngdd743f34465f419e869da6866e69431c.png

b6b11673913d47eb93c90ac62e9f01ad.pnge1401d3d9f444ac494beb0734f1bb104.png

使用不同颜色、不同形状的点绘制,如图所示。

6d663fc7164541e79fe51efbf31725f6.png

plot函数一次可以接收多组数据,添加多条折线,同时可以分别定义每条折线的颜色、点和线条的类型,还可以将这三个参数连接在一起,用一个字符串表示,如图所示。

fb0aa82ccf9b4ca6a222b3a9b8350451.png

2.绘制柱形图

       柱形图(Bar Chart)的核心思想是对比,常用于显示一段时间内的数据变化或显示各项数据之间的比较情况。柱形图的适用场合是二维数据集(每个数据点包括两个值x和y)但只有一个维度的值需要比较。例如,年销售额就是二维数据,即“年份”“销售额”,但#需要比较“销售额”这一个维度的数据。柱形图利用柱形的高度,反映数据的大小。人眼对柱形高度差异很敏感,辨识效果非常好。柱形图的局限在于它只适用于中小规模的数据集pyplot 中绘制柱形图的函数为bar,bar 函数的基本使用格式如下。

matplotlib.pypPlot.bar(x, height, width = 0.8, bottom = None, 
*, align ='center',data - None,** kwargs)

bar 函数的常用参数及其说明如表所示。

参数名称参数说明
bay_ label(names)显示数表值
x接收 aray或float。表示x轴数据。无默认值
height接收 aray或 float。表示指定柱形的高度。无默认值
width接收 array 或float。表示指定柱形的宽度。默认为0.8
bottom接收 array 或 float。表示指定柱形的起始位置。默认为None
align接收 str。表示整个柱形图与x轴的对齐方式,可选 center 和edge。默认为center
data接收可索引对象。表示具有标签数据的对象。默认为None

使用bar 函数绘制2019年城乡就业人数柱形图,如图所示。

 纵向的柱形图:aa48ac79a86844708fc46efd29d619fc.png

横向的柱形图:

59abe3b68b3e441e9a99f56e03880da8.png

3.绘制饼图

       饼图(Pie Graph)将各项数据的大小与各项数据总和的比例显示在一张“饼”中,以“饼块”的大小来确定每一项数据的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的比例,而且显示方式直观。

pyplat中绘制饼图的函数为pie,pie 函数的基本使用格式如下

matplotlib.pyplot.pie(x, Axplode=vone, labels=None,colors=None,autopct=None,
pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=o,
radius=1,counterclock=True,wedgeprops=None, textprops=None,center=0,
  0,frame=False,rotatelabels=False,  *, normalize=None, data=None)

pie 函数的常用参数及其说明如表所示。

参数名称参数说明
x接收aray。表示用于绘制饼图的数据。无默认值
explode接收 aray。表示指定饼块与饼图圆心的偏移距离。默认为None
labels接收 list。表示指定每一项数据的标袋。默认为None
colors接收特定str或包含颜色str的aray。表示饼图颜色。默认为None
autopct接收特定str。表示指定数值的显示方式。默认为None
pctdistance接收foat。表示每个饼块的中心与autopct生成的文本之间的比例。默认为0.6
labeldistance接收 foat。表示绘制的饼图标签到饼图圆心的距离。默认为1.1
radius接收 float。表示饼图的半径。默认为1

使用pie 函数绘制2019年城乡就业人数分布饼图,如图所示。

637d0287e99f4ed798ae385363cca365.png

4.绘制箱线图

        箱线图(Boxplot)也称箱须图,其绘制时,需使用常用的统计量,便能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,可表现出这些特征的分散程度差异。如下图所示标出了箱线图中每条线表示的含义。

29b44e2575c74648b57b9654f9ec8090.jpg

       箱线图利用数据中的5个统计量(非异常值的下边缘、下四分位数、中位数、上四分位数和非异常值的上边缘)来描述数据。它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别是可以用于对多个样本进行比较。

pyplot 中绘制箱线图的函数为boxplot,boxplot 函数的基本使用格式如下。

matplotlib.pyplot.boxplot (x,  notch=None,   sym=None,   vert=None,    whis=None,
positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None,
conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None,
showfliers=None,boxprops=None, labels=None,data=None,flierprops=None, medianprops=None,
meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, 
autoranges=False,zorder=None, *,data=None)

boxplot 函数的常用参数及其说明如表所示。

参数名称参数说明
x接收 array。表示用于绘制箱线图的数据。无默认值
notch接收bool。表示中间箱体是否有缺口。默认为None
sym接收特定str。表示指定异常点形状。默认为None
vert接收 bool。表示图形是纵向或横向的。默认为None
positions接收 array。表示图形位置。默认为None
widths接收float或aray。表示每个箱体的宽度。默认为None
labels接收Sequence。表示每个数据集的标签。默认为None

绘制2001-2019年城乡就业人数分布箱线图,如图所示。

930aca445ed64e66a0d8288abe209894.png

以上就是Matplotlib的基本图形、散点图、柱形图和箱线图的基本绘画。

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值