《Python数据可视化编程实战》——5.3 创建3D直方图

5.3 创建3D直方图

像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所示的图形。

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之前最好慎重考虑。

时间: 2024-08-04 00:39:46

《Python数据可视化编程实战》——5.3 创建3D直方图的相关文章

《Python数据可视化编程实战》——5.2 创建3D柱状图

5.2 创建3D柱状图 Python数据可视化编程实战 虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来.在matplotlib的世界里,这些扩展叫做工具包(toolkits).工具包是一些关注在某个话题(如3D绘图)的特定函数的集合. 比较流行的工具包有Basemap.GTK 工具.Excel工具.Natgrid.AxesGrid和mplot3d. 本节将探索关于mplot3d的更多功能.mpl

《Python数据可视化编程实战》—— 第 5 章 创建3D可视化图表

第 5 章 创建3D可视化图表 Python数据可视化编程实战本章将学习以下内容. 创建3D柱状图创建3D直方图在matplotlib中创建动画用OpenGL制作动画

《Python数据可视化编程实战》—— 1.3 安装virtualenv和virtualenvwrapper

1.3 安装virtualenv和virtualenvwrapper Python数据可视化编程实战如果同时工作在多个项目上,或是需要在不同项目间频繁切换,将所有的软件都安装在操作系统层级上也许不是一个好主意.当需要在不同系统(产品环境)上运行软件时,这种方式会带来问题.如果到此时才发现缺少特定的软件包,或是产品环境已经安装的软件包存在版本冲突,这将是非常痛苦的.为避免这种情况发生,可以选择使用virtualenv. virtualenv是由Ian Bicking创建的开放源代码项目.通过这个项

《Python数据可视化编程实战》—— 导读

前言 Python数据可视化编程实战最好的数据是我们能看到并理解的数据.作为一个开发人员,我们想创造并构建出最全面且容易理解的可视化图形.然而这并非总是很简单,我们需要找出数据,读取它.清理它.揣摩它,然后使用恰当的工具将其可视化.本书通过简单(和不那么简单)直接的方法解释了如何读取.清理和可视化数据的流程. 本书对怎样读取本地数据.远程数据.CSV.JSON以及关系型数据库中的数据,都进行了讲解. 通过matplotlib,我们能用一行简单的Python代码绘制出一些简单的图表,但是进行更高级

《Python数据可视化编程实战》—— 1.2 安装matplotlib、Numpy和Scipy库

1.2 安装matplotlib.Numpy和Scipy库 Python数据可视化编程实战 本章介绍了matplotlib及其依赖的软件在Linux平台上的几种安装方法. 1.2.1 准备工作 这里假设你已经安装了Linux系统且安装好了Python(推荐使用Debian/Ubuntu或RedHat/SciLinux).在前面提到的Linux系统发行版中,Python通常是默认安装的.如果没有,使用标准的软件安装方式安装Python也是非常简便的.本书假设你安装的Python版本为2.7或以上.

《Python数据可视化编程实战》—— 1.6 安装图像处理工具:Python图像库(PIL)

1.6 安装图像处理工具:Python图像库(PIL) Python数据可视化编程实战Python图像库(PIL)为Python提供了图像处理能力.PIL支持的文件格式相当广泛,在图像处理领域提供了相当强大的功能. 快速数据访问.点运算(point operations).滤波(filtering).图像缩放.旋转.任意仿射转换(arbitrary affine transforms)是PIL中一些应用非常广泛的特性.例如,图像的统计数据即可通过histogram方法获得. PIL同样可以应用在

《Python数据可视化编程实战》—— 1.5 在Windows上安装matplotlib

1.5 在Windows上安装matplotlib Python数据可视化编程实战在本节中,我们将演示如何安装Python和matplotlib.假设系统中没有预先安装Python. 1.5.1 准备工作 在Windows上安装matplotlib有两种方式.较简单的方式是安装预打包的Python环境,如EPD.Anaconda和Python(x,y).这是本书推荐的安装方式,尤其对于初学者来说更是如此. 第二种方式,是使用预编译的二进制文件来安装matplotlib和依赖软件包.需要注意安装的

《Python数据可视化编程实战》—— 1.8 在代码中配置matplotlib参数

1.8 在代码中配置matplotlib参数 Python数据可视化编程实战matplotlib库提供了强大的绘图功能,是本书用的最多的Python库.在其配置文件即.rc文件中,已经为大部分属性设定了默认值.本节会介绍如何通过应用程序代码修改matplotlib的相关属性值. 1.8.1 准备工作 如前所述,matplotlib配置信息是从配置文件读取的.在配置文件中可以为matplotlib的几乎所有的属性指定永久有效的默认值. 1.8.2 操作步骤 在代码执行过程中,有两种方式更改运行参数

《Python数据可视化编程实战》—— 1.9 为项目设置matplotlib参数

1.9 为项目设置matplotlib参数 Python数据可视化编程实战本节介绍matplotlib使用的各种配置文件的位置,以及使用这些配置文件的意义.同时还将介绍配置文件中的具体配置项. 1.9.1 准备工作 如果不想在每次使用matplotlib时都在代码开始部分进行配置(像前一节我们做的那样),就需要为不同的项目设定不同的默认配置项.本节将介绍如何做到这一点.这种配置方式使得配置项与代码分离,从而使代码更加整洁.此外,你可以很容易在同事间甚至项目间分享配置模板. 1.9.2 配置方法

《Python数据可视化编程实战》—— 1.7 安装requests模块

1.7 安装requests模块 Python数据可视化编程实战我们需要的大部分数据都可以通过HTTP或类似协议获得,因此我们需要一些工具来实现数据访问.Python的requests库能让这部分工作变得轻松起来. 虽然Python提供的urllib2模块提供了访问远程资源的能力以及对HTTP协议的支持,但使用该模块完成基础任务的工作量还是很大的. Request模块提供新的API,减轻了使用web服务的痛苦,使其变得更直接.Requests封装了很多HTTP 1.1的内容,仅在需要实现非默认行