
因为部分图形绘制函数共用了一套参数体系,在颜色、曲线形状等部分的使用方式也是一致的。所以,在讲解各类图形绘制之前,我们整体性地对各类通用参数进行一个整理,并在此基础上对于颜色(color)、数据点标记(marker)和曲线形式(linestyle)等几个通用参数进行相对完整的讲解。
在此,以函数为基础,对于一些比较重要的参数进行整理,包括线条的粗细,颜色,形状,样本点的标记,曲线标签等等。这里将各种参数分类汇总成如下几类:函数图像绘制
(1)曲线设置参数
(2)数据点标记(marker)的设置参数
(3)其他参数
对于曲线上每一个散点,均可以利用一个标记进行单独的显示,这个标记被叫做。它有许多可选的参数,这里将可以直接作为参数调用的主要部分摘自官方文档整理如下:

与此同时,绘制曲线时,其线型()也有多种可选参数,整理如下:
作为和的参数,上述参数表对于所有能用上它们的函数都适用。
对于,我们能传递多种参数,最常用的有三种传参的形式:
我们可以通过已有的帮助文档了解常用的一批颜色的名称,以便于我们访问和选用[ 参考:官方文档1、官方文档2、官方文档3函数图像绘制]。例如如下源于官方示例的色彩图,实际上内置的颜色名称远比下面要丰富:

但是,访问一个特定的颜色并不是本节讲解colors的全部。我们这里继续补充一个matplotlib中与颜色相关的很有意义的功能,即。当访问一个,便可访问整组颜色,并依照需要选择其中的某一个。例如在这里,我们首先观察两组不同的,其各种各样的内置cmap详见各种官方文档链接:camp官方文档


上面展示了两个,这里显示的每一行就是一个的颜色序列,左侧是这个的名称。用系统内置的颜色序列方式是,利用函数访问某个的名称,即可访问对应的颜色序列,返回的是一个对象,当传递列表时,会得到对应的颜色数目,传递的列表有两种主要形式:
先导入本节需要用到的函数包和数据表:
具体使用示例如下:
输出如下:

也可以在一些函数内作为参数,例如在支持参数,这个参数允许接收一个标记各组元素的各自颜色。
先定义一些数据如下:
输出图像如下:

图,它假定的是x一直递增,但是其中的x在x[i]到x[i + 1]之间都取同一个值,默认是y[i+1] 请参考:step图官方文档。
相比而言,多了一个参数(。当为时,表示x在x[i]到x[i + 1]之间一直取y[i + 1],为时,表示一直取y[i],为时,表示在x到x+1的中点跳变,的默认值为。我们再一段代码展示其效果:
输出图像如下:

我们首先绘制函数的图。是同时将x和y标度取对数后作图:


函数和与类似,是单独将y或x的值取对数后作图:
输出图像如下:


散点图利用绘制,同时利用参数根据曲线的各个点指定点的颜色,利用参数根据设置各个散点的大小, 利用参数指定点的形状。在这里取鸢尾花数据集的花萼长和花萼宽进行散点图绘制:
genus列是鸢尾花数据集中的类别属性,我们用它作为我们的分组变量。我们设置一个颜色的字典,利用列表推导式制作每个点的颜色(二维列表),将它传递给函数作为参数:
输出图像如下:

利用的是参数,它的值就是各个点的大小,我们根据trees数据的的Volume(即树在该周长和高度下的黑莓产量)设置点的大小:
输出图像如下:

对于参数而言,还有其扩展的功能,它可以不是传入数组,而是传入一个通过numpy建立的。这是一个带对应布尔值的数组,它可以实现的是在值为时输出该点,在时不输出该点[ 其实直接在早先按照逻辑判断,将数组按照条件语句拆成多个部分分别画图也可以达到一样的效果。]。请注意通过numpy构建如下的方式:
输出图像如下:

这里可以绘制一般的纵向的条形图,也可以绘制横向的条形图,二者分别通过两个函数名字分别为和[ 请参考:bar()函数官方文档、barh()函数官方文档]。
函数常用的参数如下:
具体示例如下:
输出图像如下:

参数设置的是我们这个条形图的绘制起点,也就是底点,我们从这个底点向上画图,就能得到堆叠的效果
实现堆叠型柱形图的代码示例如下。请注意,为了令图形保持协调统一,最好是保持逻辑上是一组条形图中各个或者等参数的一致。代码及输出图像如下:

上述两个重要的参数和,放到水平的条形图中的对应参数是和。我们在此简单地将刚刚的代码修改一下,并利用绘制水平方向的堆叠图:
输出图像如下:

饼图能清晰地展示一组数据的分布情况。绘制饼图使用函数[请参考: 饼图的官方文档 ]。
我们首先介绍其最基本的调用方式:
输出图片如下:

在绘制饼图的时候,有几个相对重要的参数:
这里请务必注意和中属性的关系。这些半径值全部是绝对数字而非比例,例如半径radius为0.9的圆,遇上width为0.7时,表示在半径0.9的圆区域内,从边线向内绘制一个0.7半径的环,剩余内部半径0.2的小圆置空。这个是绘制饼图时相对有些需要仔细理解的重要内容。
除了这三个参数以及字典之外,在饼图中有许多可以利用的这些参数,包括颜色、边线、文本标记的调整等,但这些较为容易理解,因此直接在此给出一个相对复杂的饼图的例子,并在绘制这个饼图的过程中以批注逐一说明:
输出图像如下。请注意此时是在半径为1.2的圆形区域内,绘制一个宽度为0.4的环形。与此同时,我们利用了一个函数,用以指示饼图的显示形状为正圆形,即将长宽设置为等长:

我们可以绘制数个环形的图片,将数年的数据输出在同一张饼图上,这里绘制三年的数据。这里我们就运用的来获取深浅程度略有差异一组颜色,分别指示三年的分布变化(tab20c只支持20种颜色):
输出图像如下。other类全为浅灰色的原因是仅有5类共20个颜色,other超出了访问范围,因此全部取了的最后一个颜色浅灰色。不过在此,效果恰合需求:

这种方式的展示在比较各种分配侧重的时候显得很直观,例如城市间第一二三产业产值占比、消费类型占比的比较等。
直方图用于观察一个变量分布情况,传递的是一维数据,返回的图形横坐标是值,纵坐标是频数或是分布概率。绘制直方图一般用函数[ 请参考:hist()函数官方文档]
函数有许多需要描述的参数,在此整理如下:
我们使用随机采样构建一个正态分布的采样结果,来展示这个函数的调用方式,具体示例如下:
在绘图结果之上,我们也可以顺带做一个拟合分布的曲线:
输出图像如下:

二维数据直方图[ 请参考:hist2d()函数官方文档],二维数据的直方图用函数。绘制二维数据的直方图类似于绘制一个热力图,即颜色的从高到低代表频数,横纵坐标是二维数据本身。在这个里面有部分参数和之中的很相似,区别主要是分箱和区间的定义方式,以及利用定义直方图的颜色展示:
输出图像如下:

热力图实际上可以说是一种用颜色来描述数值大小的分布。在绘制热力图中,最基础的是,层级图绘制的是一个一个的方块,而绘制的是平滑的过渡曲线。但热力图绘制的是各个区间点的值,这个值对应到在直方图中时,就是我们的概率密度。我们为了能够能传递数据,就首先拿着我们刚刚的x和y,来先行计算频数和每个方框的概率密度。
步骤1:定义绘制的长和宽即区间个数。接着进行数目为num的随机采样,这里仍然以正态分布的方式采集样本:
步骤2:设置和的上下区间并直接用于构建一个等差数列,这个区间基于3delta原则计算,可调整。这里的格子中,仅保存从0.3分位数至99.7分位数;width个区间需要width + 1个元素来指示。
步骤3:计算某个区间的频数(pf)和累积的频数(cf)。注意的第一是传入的元组中,x的宽是列数,y的宽是行数,可能与我们的潜意识相反,这个问题贯穿程序。第二是需要用pandas DataFrame的切片修改,因为用numpy数组切片后再次切片做元素访问,不会修改原值。
步骤4:利用累积频数除以总样本数可得累积概率分布(z_cd)。利用每一个区间的频数除以总样本数作为概率值,之后对每个区间的面积进行标准化(将总面积标准化为1),得到最终的概率密度(z_pd):
最后,我们将这两者进行保存成为文件:
我们首先将数据读取出来,这个步骤对后面的函数和函数相同:
输出图像如下:

对于它,我们也有一些重要的修饰参数:
我们集中调用一个例子,进行绘图部分:
最终输出一个带颜色标尺的图形:

相比于绘制时是每一个点绘制一个颜色块,在中,每一个实际绘制的样本点,实际上是由x和y所环绕的矩形。
具体示例如下:
我们也结合上面的x、y和上述例子来调用这个函数,以观察效果。需要指出的是,x和y可以不给出,只给出z_pd这样同样能完成图像的绘制,但横纵坐标的绘制结果会与函数相同,给出x、y之后横纵坐标会参考x和y进行设置:
输出图像如下:

我们可以绘制等高线图和,其中,绘制的是填充的等高线区间,绘制的是等高线的线本身,它的x和y也不是必须的,但如果给出x和y时,和刚刚的x和y稍有不同。
我们简单讲解一下即可,仅用其少数几个参数:
输出图像如下:

箱线图绘制的是每个列数据的箱体和异常点。使用函数,它的详细参数介绍如下:
具体示例如下:
输出图像如下:

小提琴图是同时描述数据上下分布和数据密度的图形,使用plt.violinplot函数,提琴的主要参数介绍如下,和箱线图的主要参数很相似:
在此,我们同样用一个例子来综合运用上面各个参数,来展示各参数实际效果:
输出图像如下:

以上就是在数据分析中常用到的可视化图形,下节我们将补充对于图形属性设置函数的讲解。
对于缺乏Python基础的同仁,可以通过免费专栏🔥《Python学习笔记(基础)》从零开始学习Python
请始终相信 ,不要过分追求完美,即刻行动就是最好的开始, 一个模块一个模块地积累和练习,必将有所收获。
还有其他的问题欢迎在评论区留言📝!
[版权申明] 非商业目的注明出处可自由转载,转载请标明出处!!!
博客:butterfly_701c