用mathplotlib实现数据可视化

用mathplotlib实现数据可视化

mathplotlib架构

matplotlib是一个Python工具箱,mathplotlib的核心是一套由对象构成的绘图API,Python借助它可以绘制多种多样的数据图形。

  • matplotlib是一个Python工具箱,matplotlib的核心是一套由对象构成的绘图API,Python借助它可以绘制多种多样的数据图形。

  • matplotlib的主要功能是提供了一套表示和操作图形对象以及它的内部对象的函数和工具。

  • matplotlib不仅可以处理图形,还可以为图形添加动画效果,能生成以键盘按键或鼠标移动触发的交互式图表。

  • matplotlib库的特色:

    以渐进、交互式方式实现数据可视化;
    可输出PNG、PDF、SVG和EPS等多种格式。

  • matplotlib像是一个图形库,可通过编程来管理组成图表的图形元素,这种图形实现方法便于在多种环境下重新生成,尤其在改动或更新数据之后。此外,用这个库实现的图形可以以图像格式(如PNG和SVG)输出,方便其他应用、文档和网页使用。

  • 从逻辑上看,matplotlib架构可被逻辑性地分为三层,这三层从底向上分别为:后端层(Backend)、表现层(Artist)与脚本层(Scripting)。各层之间单向通信,即每一层只能与它的下一层通信,而下层无法与上层通信。

后端(Backend)层

后端层是matplotlib架构的最底层,matplotlib API即位于该层,这些API是用于在底层实现多个图形元素类,具体包括:

  • FigureCanvas:用来实例化生成一个绘画区域,再绘图的过程中充当画板的角色,即放置画布的工具。
  • Renderer:在FigureCanvas生成的绘图区域上进行绘图。
  • Event:处理用户输入(键盘与鼠标事件)

表现(Artist)层

  • 表现(Artist)层是matplotlib架构的中间层,负责很大一部分繁重的计算任务,图形中所有能看到的元素,都是由Artist来实现的,其包括的主要类型有标题、直线、刻度标记以及图像等。

  • Artist类型分为简单(primitives)类型和容器(container)类型两种。primitives类型为标准的我们想绘制的图形对象,例如Line2D、 Rectangle、 Text、AxesImage 等等。而容器container是储存以上对象的地方,比如Axis(单条轴)、Ticks(刻度)、Axes(轴)、Figure(图形)等。Axes表示一个图表,一个Axes包涵:titlek,xaxis,yaxis。Figure代表一个绘图面板,其中可以包涵多个Axes(即多个图表)。

  • 使用Artist创建图表的标准流程如下:

    创建Figure对象;
    用Figure对象创建一个或者多个Axes或者Subplot对象;
    调用Axies等对象的方法创建各种简单类型的Artist。
    图表中的每个元素都用一个matplotlib的Artist对象表示,而每个Artist对象都有多个属性控制其显示效果。

属性说明
alpha透明度,值在0到1之间,0为完全透明,1为完全不透明
animated布尔值,在绘制动画效果时使用
axes此Artist对象所在的Axes对象,可能为None
contains判断指定点是否在对象上的函数
figure所在的Figure对象,可能为None
label文本标签
picker控制Artist对象选取
transform控制偏移旋转
visible是否可见
zorder控制绘图顺序

脚本(Scripting)层

Artist类和相关函数(matplotlib API)非常适合开发人员,尤其是Web应用服务器或GUI开发者使用。对于日常用途,尤其对于非专业程序员而言,API的语法可能有些难以掌握。大多数用于数据分析与可视化的专用语言都会提供轻量级的脚本接口来简化一些常见任务。脚本(Scripting)层在其matplotlib.pyplot接口中便实现了这一点。
在这里插入图片描述

在这里插入图片描述

  • 使用matplotlib绘图,主要使用matplotlib.pyplot子库。matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表,并设置图表的各种细节。
  • pyplot子库是命令行式函数的集合,通过pyplot的函数可操作或改动Figure对象,比如创建Figure对象和绘图区域(窗口),在绘图区域上画线,为图形添加标签等。
  • pyplot还具有状态特性,它能跟踪当前图形和绘图区(窗口)的状态,调用函数时,函数只对当前图形起作用。
  • 在绘图结构中,pyplot子库下的figure用来创建窗口,subplot用来创建子图。
    pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None) #figure的语法格式,返回Figure对象
参数说明
num整数或者字符串,默认值是None,表示Figure对象的id。如果没有指定num,那么会创建新的Figure,id(也就是数量)会递增,这个id存在Figure对象的成员变量number中;如果指定了num值,那么检查id为num的Figure是否存在,存在的话直接返回,否则创建id为num的figure对象,如果num是字符串类型,窗口的标题会设置成num。
figsize整数元组,默认值是None。表示宽、高的inches数。
dpi整数,默认值为None。表示figure的分辨率
facecolor背景颜色
edgecolor边缘颜色

在这里插入图片描述在这里插入图片描述
执行plt.show()显示两个空白窗口

matplotlib中,一个Figure对象可以包含多个子图,可以使用subplot()来创建子图,subplot的语法格式如下:
pyplot.subplot(numRows, numCols, plotNum)
参数说明:
整个绘图区域被分成numRows行和numCols列,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1,plotNum参数指定创建的Axes对象所在的区域。如果numRows=2, numCols=3,那整个绘图区域被分成2*3个子区域,用坐标表示为:
(1, 1), (1, 2), (1, 3)
(2, 1), (2, 2), (2, 3)
若plotNum=3,则表示subplot将子区域(1, 3)指定为接下来要进行绘图的区域。

matplotlib的pyplot子库

绘制线型图

1、调用figure创建一个绘图对象,并且使它成为当前的绘图对象
在这里插入图片描述
2、通过调用plot函数进行绘图
plt.plot([1,2,3,4],‘ko–’)
'ko–'为控制曲线的格式字符串,其中,k表示线的颜色是黑色,o表示数据点用实心圈标记,–表示线的风格(形状)用破折线表示。
在这里插入图片描述
3、设置绘图对象的各个属性
在这里插入图片描述
在这里插入图片描述
**plt.plot(x, y, format_string, kwargs)
参数说明:
x:为x轴数据,可为列表或数组;
y同理。
format_string :为控制曲线的格式字符串,由颜色字符、标记字符和风格字符组成。
**kwargs:第二组或更多的(x, y, format_string)。
pyplot并不默认支持中文显示,
第一种方法:使用模块rcParams修改字体实现(图片的整体字体都会改变)。
第二种方法:在有中文输出的地方,增加一个属性:fontproperties(仅修饰需要的地方,其他地方的字体不会跟随改变)。
使用rcParams
在这里插入图片描述
在这里插入图片描述
在有中文输出的地方,使用属性fontproperties显示中文字体
在这里插入图片描述

在这里插入图片描述

绘制直方图

直方图是用一系列等宽不等高的长方形来表示数据,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,矩形的高度跟落在间隔内的数据数量成正比,变化的高度形态反映了数据的分布情况。直方图的作用:

  • 显示各种数值出现的相对概率;
  • 提示数据的中心、散布及形状;
  • 快速阐明数据的潜在分布;
  • 为预测过程提供有用的信息。
    pyplot用于绘制直方图的函数为hist(),它除了绘制直方图外,还以元组形式返回直方图的计算结果。此外,hist()函数还可以实现直方图的计算,即它能够接收一系列样本个体和期望的间隔数量作为参数,会把样本范围分成多个区间(间隔),然后计算每个间隔所包含的样本个体的数量,即运算结果除了以图形形式表示外,还能以元组形式返回。
    在这里插入图片描述
    在这里插入图片描述

绘制条形图

bar(left, height, width=0.8, color, align, yerr, orientation)函数:
绘制柱形图。 参数说明: left:x轴的位置序列,即条形的起始位置;

  • height:y轴的数值序列,也就是条形图的高度,也就是需要展示的数据;
  • width:条形图的宽度,默认为0.8;
  • color:条形图的填充颜色;
  • align:{‘center’,‘edge’},可选参数,默认为’center’,如果是’edge’,通过左边界(条形图垂直)和底边界(条形图水平)来使条形图对齐;如果是’center’,将left参数解释为条形图中心坐标;
  • orientation:{‘vertical’, ‘horizontal’},垂直还是水平,默认垂直。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

绘制饼图

pie(sizes, explode= None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None)
参数说明:

  • startangle:起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向逆时针画起;
  • shadow:是否阴影 labeldistance:每块旁边的文本标签的位置离饼的中心点有多远,1.1指1.1倍半径的位置;
  • pctdistance:每块的百分比标签离圆心的距离;
  • radius:设置饼图的半径大小。
    在这里插入图片描述
    在这里插入图片描述

绘制散点图

scatter(x, y, s= 20, c= None, marker= ‘o’, alpha= None, edgecolors= None)
参数说明:

  • x:指定散点图中点的x轴数据;
  • y:指定散点图中点的y轴数据;
  • s:指定散点图点的大小,默认为20;
  • c:指定散点图点的颜色,默认为蓝色;
  • marker:指定散点图点的形状,默认为圆形;
  • alpha:设置散点的透明度;
  • edgecolors:设置散点边界线的颜色;
    在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值