我是靠谱客的博主 伶俐发带,最近开发中收集的这篇文章主要介绍python 直方图每个bin中的值_《Python数据可视化编程实战》——5.3 创建3D直方图-阿里云开发者社区...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本节书摘来异步社区《Python数据可视化编程实战》一书中的第5章,第5.3节,作者:【爱尔兰】Igor Milovanović,更多章节内容可以访问云栖社区“异步社区”公众号查看。

5.3 创建3D直方图

Python数据可视化编程实战

像3D柱状图一样,我们可能想创建3D直方图。3D直方图可以用来很容易地识别3个独立变量之间的相关性。可以用它们来从图像中提取信息,其中第三个维度可以是所分析的图像的(x, y)空间通道的强度。

本节将学习如何创建3D直方图。

5.3.1 准备工作

回顾一下,直方图表示的是一些值在特定列(通常叫做“bin”)中的发生率。那么,三维直方图表示的是在一个网格中的发生率。网格是矩形的,表示的是在两列中关于两个变量的发生率。

5.3.2 操作步骤

在这个计算过程中,我们将进行如下操作。

1.使用Numpy,因为其拥有计算两个变量的直方图的函数。

2.用正态分布函数生成x和y,但是给它们提供不同的参数,以便能区分结果直方图的相互关系。

3.用相同的数据集合绘制散点图,展示散点图和3D直方图显示上的差异。

下面是实现上述步骤的代码。

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

from mpl_toolkits.mplot3d import Axes3D

mpl.rcParams['font.size'] = 10

samples = 25

x = np.random.normal(5, 1, samples)

y = np.random.normal(3, .5, samples)

fig = plt.figure()

ax = fig.add_subplot(211, projection='3d')

# compute two-dimensional histogram

hist, xedges, yedges = np.histogram2d(x, y, bins=10)

# compute location of the x,y bar positions

elements = (len(xedges) - 1) * (len(yedges) - 1)

xpos, ypos = np.meshgrid(xedges[:-1]+.25, yedges[:-1]+.25)

xpos = xpos.flatten()

ypos = ypos.flatten()

zpos = np.zeros(elements)

# make every bar the same width in base

dx = .1 * np.ones_like(zpos)

dy = dx.copy()

# this defines the height of the bar

dz = hist.flatten()

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b', alpha=0.4)

ax.set_xlabel('X Axis')

ax.set_ylabel('Y Axis')

ax.set_zlabel('Z Axis')

# plot the same x,y correlation in scatter plot

# for comparison

ax2 = fig.add_subplot(212)

ax2.scatter(x, y)

ax2.set_xlabel('X Axis')

ax2.set_ylabel('Y Axis')

plt.show()

上述代码生成如图5-3所示的图形。

f8d4a5ff54f8763fef6c462c848387c30717b659.png

5.3.3 工作原理

我们用np.histogram2d生成了一个直方图,该方法返回了直方图(hist)、x bin边界和y bin边界。

bar3d函数需要x, y空间的坐标,因此需要计算出一般的矩阵坐标,对此我们使用np.meshgrid函数把x和y位置的向量合并到2D空间网格中(矩阵)。我们可以使用它在xy平面位置上绘制矩形条。

变量dx和dy表示每一个矩形条底部的宽度,我们想把它设置为常数,因此我们为xy平面的每一个位置给定的值为0.1 个点的宽度。

z轴上的值(dz)实际上是计算机直方图(在变量hist中),它表示在一个特定的bin中一般的x和y样本的个数。

接下来在散点图(图5-3)中显示了一个2D坐标轴,也呈现了两组相似但起始参数不同的分布间的相互关系。

有时候,3D给予我们更多的信息,并以一个更好的方式让我们来理解数据所包含的内容。然而在更多情况下,3D可视化比2D更加让人感到迷惑,所以在舍弃2D选择3D之前最好慎重考虑。

最后

以上就是伶俐发带为你收集整理的python 直方图每个bin中的值_《Python数据可视化编程实战》——5.3 创建3D直方图-阿里云开发者社区...的全部内容,希望文章能够帮你解决python 直方图每个bin中的值_《Python数据可视化编程实战》——5.3 创建3D直方图-阿里云开发者社区...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部