matplotlib基础教程,matplotlib基础绘图

  matplotlib基础教程,matplotlib基础绘图

  接下来,简单的直方图是理解数据集的第一步。前面我们看到了Matplotlib的直方图函数。我们可以用一行代码画出基本的直方图。当然,我们首先需要将我们需要使用的包导入Pycharm:

  将numpy作为np导入

  将matplotlib.pyplot作为plt导入

  plt.style.use(seaborn-white )

  data=NP . random . randn(1000)PLT . hist(data);plt.show()

  Hist()函数有许多参数可以用来调整操作和显示;这是另一个更加个性化的直方图显示:

  译者注:规格化参数已经过时,这里的代码已经做了相应的修改,使用了替代的密度参数。代码plt.hist(数据);将其替换为以下内容:

  plt.hist(数据,箱=30,密度=真,alpha=0.5,

  histtype=stepfilled ,color=steelblue ,

  edge color= none );

  plt.hist文档中有更多关于个性化参数的信息。我们发现,histtype=stepfilled 和alpha参数的组合在比较和显示具有不同分布的数据集时非常有用:

  x1=np.random.normal(0,0.8,1000)

  x2=np.random.normal(-2,1,1000)

  x3=np.random.normal(3,2,1000)

  kwargs=dict(hist type= step filled ,alpha=0.3,density=True,bins=40)

  plt.hist(x1,**kwargs)

  plt.hist(x2,**kwargs)

  plt.hist(x3,* * kwargs);

  如果您只需要计算直方图的值(即每个桶的数据点数)而不是显示图像,np.histogram()函数可以实现这个目标:

  计数,bin_edges=np .直方图(数据,bins=5)

  打印(计数)[ 49 273 471 183 24]

  二维直方图和桶划分。就像我们可以用一维的数值对应的直线来划分桶一样,我们也可以用二维的数据对应的点来划分桶。在本节中,我们将介绍几种实现方法。首先,定义数据集,并从多元高斯分布中获得X和Y数组:

  平均值=[0,0]

  cov=[[1,1],[1,2]]

  x,y=NP . random . multivariate _ normal(均值,cov,10000)。绘制2d直方图最直接的方法是使用plt。Matplotlib的HIST2D函数:

  plt.hist2d(x,y,bins=30,cmap=Blues )

  cb=plt.colorbar()

  CB . set _ label( bin中的计数)

  与plt.hist类似,plt.hist2d有许多附加参数来调整铲斗计算和图表显示。您可以通过文档了解更多信息。再者,plt.hist有np.histogram,PLT . histogram 2d也有其对应的函数np.histogram2d,例如:

  县,x边,y边=np.histogram2d (x,y,bins=30)。如果想得到更高维的分桶结果,请参考np.histogramdd函数文档。

  Plt.hexbin:六边形桶划分刚才的二维桶划分就是将每个桶沿着坐标轴划分成正方形。另一种自然的桶形是正六边形。针对这一需求,Matplotlib提供了plt.hexbin函数,该函数也以桶的形式显示在二维平面上,但每个桶(即图表上的每个数据单元)将是六边形的:

  plt.hexbin(x,y,gridsize=30,cmap=Blues )

  CB=PLT . color bar(label= bin中的计数)

  Plt.hexbin有很多有趣的参数,包括可以为每个点设置权重,将每个桶的输出数据结果更改为任意NumPy聚合结果(加权平均、加权标准差等。).

  核密度估计另一种常用于计算多维数据密度的工具是核密度估计(KDE)。目前,我们只需要知道KDE被认为是一种可以用来填补数据空白和补充平滑变化数据的方法。并且在scipy.stats模块中实现了快速简单的KDE算法。这里有一个简单的例子来说明如何使用KDE并绘制相应的2D直方图:

  从scipy.stats导入高斯_kde

  平均值=[0,0]

  cov=[[1,1],[1,2]]

  x,y=NP . random . multivariate _ normal(均值,cov,10000)。T

  #生成和处理数据,初始化KDE

  data=np.vstack([x,y])

  kde=高斯_kde(数据)

  #计算一般网格中Z的值

  xgrid=np.linspace(-3.5,3.5,40)

  ygrid=np.linspace(-6,6,40)

  Xgrid,Ygrid=np.meshgrid(xgrid,Ygrid)

  z=kde . eval(NP . v stack([xgrid . ravel()、Ygrid.ravel()]))

  #将图表绘制成图像

  PLT . im show(z . shape(xgrid . shape),

  origin=lower ,aspect=auto ,

  范围=[-3.5,3.5,-6,6],

  cmap=Blues )

  cb=plt.colorbar()

  cb.set_label(“密度”)

  plt.show()

  KDE有一个平滑的长度,可以有效地调整细节和平滑度(一个例子是方差偏差权衡)。关于这方面的文献很多:高斯核密度估计gaussian_kde利用经验规则寻找输入数据附近的最优平滑长度。

  其他KDE实现也可以在SciPy中找到,每一个都有它的优点和缺点;

  见sklearn。neighbors.kernel density和stats模型. nonparameter . kernel _ density . kde多变量。基于KDE绘制可视化图表,Matplotlib编写的代码会比较冗长。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: