1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图

cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图

时间:2018-11-15 07:04:46

相关推荐

cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图

在本篇文章中,我们将接触一个新的绘图函数plt.scatter( ),它用于散点图的绘制。从前几篇文章中,我们已经深知,学习Matplotlib绘图其实就是学习绘图函数中的参数!将参数活学活用,不同的参数搭配会产生不同的化学效应!

认真学习完本章内容,这种图信手拈来

接下来,我们开始学习plt.scatter( )中各参数的作用以及参数值的传入

话不多说,直接上干货

如何查看一个函数有哪些参数?

第一步:以pycharm为例,在代码中,光标移动到函数名上,双击函数名(这里以sactter为例),变为下图显示方式

第二步:Ctrl+Q,如下图所示,你就能知道该函数有哪些参数了

可以看到,在scatter( )中,其参数如下:

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

下面,我将参数分为两大类,分开讲解

(1)基本参数讲解

x, y→ 散点的坐标s→ 散点的面积c→ 散点的颜色(默认值为蓝色,'b',其余颜色同plt.plot( ))marker→ 散点样式(默认值为实心圆,'o',其余样式同plt.plot( ))alpha→ 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)linewidths→散点的边缘线宽edgecolors→ 散点的边缘颜色

这里为了生成点的坐标,用到了numpy中的随机数生成器np.random.rand(d0, d1, ..., dn)

rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)dn表示生成数据的维度返回值为指定维度的array

上代码直观感受

np.random.rand(4)生成了一维数据,如下[0.90906869 0.90382675 0.12846739 0.82934525]

np.random.rand(4,2)生成了二维数据,如下[[0.06704094 0.39773471][0.66768398 0.22644566][0.33790806 0.04170456][0.68308087 0.85099505]]

以此类推np.random.rand(d0, d1, ..., dn)可以生成n维随机数

有这一利器,我们的随机散点坐标就有了着落,上代码上图

import matplotlib.pyplot as pltimport numpy as npn = 10 # 用于生成十个点x = np.random.rand(n)y = np.random.rand(n)plt.scatter(x, y)plt.show()

通过上面给出的基本参数进行优化,代码及图如下

import matplotlib.pyplot as pltimport numpy as npn = 10 # 用于生成十个点x = np.random.rand(n)y = np.random.rand(n)plt.scatter(x, y, s=100, c='r', marker='*',alpha=0.65)plt.show()

有些明眼人一看,怎么优化前后两幅图散点的位置不一样了!?~

这就对了,因为这些点是由随机数生成器np.random.rand( )产生的,所以每次都不一样

(2)高级参数讲解

cmap →指的是matplotlib.colors.Colormap,相当于多个调色盘的合集norm、vmin、vmax →散点颜色亮度设置

上代码上图,进一步解释

为了演示,这里要用到一点伪随机数生成方法,不做过多解释,不理解的请移步

【数据处理】numpy.random.RandomState的用法

import matplotlib.pyplot as pltimport numpy as nprng = np.random.RandomState(0)x = rng.randn(50) # 随机产生50个X轴坐标y = rng.randn(50) # 随机产生50个Y轴坐标colors = rng.rand(50) # 随机产生50个用于颜色映射的数值sizes = 700 * rng.rand(50) # 随机产生50个用于改变散点面积的数值plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')plt.show()

这里从cmap中选取了一个叫做'viridis'的调色盘,其作用是,将参数c中获取到的数值,映射到“色盘”中已经对应好的颜色上,多读两遍,好好理解!

并且上图中从“色盘”viridis中获取到的颜色,可以通过plt.colorbar( )显示为颜色条(与热力图同理)。

代码和可视化结果图如下所示

import matplotlib.pyplot as pltimport numpy as nprng = np.random.RandomState(0)x = rng.randn(50) # 随机产生50个X轴坐标y = rng.randn(50) # 随机产生50个Y轴坐标colors = rng.rand(50) # 随机产生50个用于颜色映射的数值sizes = 700 * rng.rand(50) # 随机产生50个用于改变散点面积的数值plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')plt.colorbar() # 显示颜色条plt.show()

从上图上,可以很明显的看出:

颜色映射的这维属性数据(颜色条表示),其值主要集中于[0.4, 0.8]之间

为了更好的观察这维属性数据,可以重新设置颜色条的映射范围

需要用到colors.Normalize( ),使用方法如下:

class matplotlib.colors.Normalize(vmin=None, vmax=None)

参数vmin、vmax分别为要设置的数据范围的最小值和最大值(注意:设置之后,原来大于vmax的值被“拉低”成vmax;原来小于vmin的值被“拉高”成vmin)

代码和可视化结果图如下所示

import matplotlib.pyplot as pltimport numpy as npfrom matplotlib import colors # 注意!为了调整“色盘”,需要导入colorsrng = np.random.RandomState(0)x = rng.randn(50)y = rng.randn(50)color = rng.rand(50)sizes = 700 * rng.rand(50)changecolor = colors.Normalize(vmin=0.4, vmax=0.8)plt.scatter(x, y, c=color, s=sizes, alpha=0.3, cmap='viridis',norm=changecolor)plt.colorbar()plt.show()

对于数据可视化而言,我们要用多种方式方法,将数据映射到可视化界面上,因此,散点大小,形状,颜色等等均可以表示数据集中的某维属性,好好理解一下!

好了,今天到此为止,希望大家喜欢,动动小手,关注点赞~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。