1. 首页 > 快讯

《Python实现数据可视化》创建3D直方图

比较流行的工具包包括Basemap、GTK工具、Excel工具、Natgrid、AxesGrid和mplot3d。

本节将探讨有关mplot3d 的更多功能。 mpl_toolkits.mplot3 工具包提供了一些基本的3D 绘图功能。它支持的图表类型包括散点图(scatter)、曲面图(surf)、线图(line)和网格图(mesh)。虽然mplot3d 不是最好的3D 图形绘制库,但它是与matplotlib 一起产生的,因此我们已经熟悉它的界面。

准备工作

基本上,我们仍然需要创建一个图表并向其中添加所需的轴。但不同的是,我们为图表指定了3D视图,并且添加的坐标轴是Axes3D。

现在我们可以使用几乎相同的函数进行绘图。当然,函数的参数不同,需要提供3个轴的数据。

例如,我们要为函数mpl_toolkits.mplot3d.Axes3D.plot 指定xs、ys、zs 和zdir 参数。其他参数直接传递给matplotlib.axes.Axes.plot。下面解释这些具体参数。

1. xs和ys:x轴和y轴坐标。

2. zs:这是z轴的坐标值。可以是所有点对应的值,也可以是每个点对应的值。

3. zdir:确定使用哪个坐标轴作为z轴维度(通常是zs,但也可以是xs或ys)。

提示:模块mpl_toolkits.mplot3d.art3d 包含3D 艺术家代码和将2D 艺术家转换为3D 版本的函数。该模块中有一个rotate_axes方法,可以添加到Axes3D中以重新排序坐标,以便轴与zdir一起旋转。 zdir 的默认值为z。在坐标轴前添加'``-``'将反转变换,因此zdir的值可以是x、-x、y、-y、z或-z。

操作步骤

以下代码演示了我们已经解释过的概念。

导入randomimport numpy为np导入matplotlib为mpl导入matplotlib.pyplot为plt导入matplotlib.dates为mdatesfrom mpl_toolkits.mplot3d导入Axes3Dmpl.rcParams['font.size']=10fig=plt.figure()ax=Fig.add_subplot(111, 投影='3d')for z in [2011,2012,2013,2014]: xs=xrange(1,13) ys=1000 * np.random.rand(12) color=plt.cm.Set2(random.choice(xrange) (plt.cm.Set2.N))) ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs) ))ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))ax.set_xlabel('月')ax.set_ylabel('年')ax.set_zlabel('销售净额[美元]')plt.show()上述代码生成如图5-1 所示的图表。

图5-1

《Python实现数据可视化》创建3D直方图

工作原理

我们需要做与2D世界中相同的准备工作。不同的是,你需要在这里指定后端的类型。然后生成一些随机数据,例如4年(2011-2014)的销售额。

我们需要为3D 轴指定相同的Z 值。

从颜色图集中随机选择一种颜色,并将其与每个Z 顺序集的xs、ys 对相关联。最后,使用xs、ys 对来渲染条形序列。

补充说明

此处还可以使用其他一些matplotlib 2D 绘图函数。例如,scatter() 和plot() 具有类似的接口,但具有附加的点标记大小参数。我们也非常熟悉contour、contourf和bar。

仅以3D 形式出现的新图表类型包括线框、曲面和三面图。

在下面的示例代码中,我们绘制了著名的Pringle 函数的三翼图,该函数在数学上称为双曲抛物面。

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport matplotlib.pyplot as pltimport numpy as npn_angles=36n_radii=8# 半径数组# 不包括半径r=0,这是为了消除重复点radii=np.linspace(0.125, 1.0, n_radii)# 角度数组angles=np.linspace(0, 2 * np.pi, n_angles, endpoint=False)# 重复每个半径的所有角度angles=np.repeat(angles[. np.newaxis], n_radii , axis=1)# 将极坐标(半径、角度)坐标转换为笛卡尔(x, y)坐标# 这里添加(0, 0)。 (x, y)planex=np.append( 0, (radii * np.cos(angles)).flatten())y=np.append(0, (radii * np.sin(角度)).flatten())# Pringle 曲面z=np.sin(-x * y)fig=plt.figure()ax=Fig.gca(projection='3d')ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)plt.show()上述代码生成如图5-2所示的图形。

图5-2

内容简介:本书是一本使用Python实现数据可视化编程的实用指南。介绍了如何使用Python最流行的库通过60多种方法创建漂亮的数据可视化效果。

本书共8章,内容涵盖工作环境准备、理解数据、绘制和定制图表、学习更多图表和定制、创建3D可视化图表、用图像和地图绘制图表、使用正确的图表理解数据等了解matplotlib。

本书适合有一定Python编程基础的开发者。它可以帮助读者从头开始理解数据、数据格式和数据可视化,并学习使用Python来可视化数据。

用户评论

北染陌人

哇,用Python做3D直方图,这太酷了!我得试试!

    有13位网友表示赞同!

良人凉人

3D直方图看起来很复杂,但用Python实现起来还挺容易的,点赞!

    有20位网友表示赞同!

入骨相思

这个教程太棒了,让我对Python数据可视化有了更深的了解。

    有11位网友表示赞同!

ˉ夨落旳尐孩。

原来Python也能实现3D直方图,感觉打开了新世界的大门!

    有8位网友表示赞同!

熟悉看不清

使用Python创建3D直方图,可以更直观地展示数据的分布。

    有7位网友表示赞同!

该用户已上天

这个3D直方图很漂亮,关键是还很好理解!

    有14位网友表示赞同!

凝残月

3D直方图,数据可视化的新高度!

    有7位网友表示赞同!

败类

感谢分享这个实用的教程,让我学会了用Python绘制3D直方图!

    有12位网友表示赞同!

凉话刺骨

Python数据可视化真是太强大了!

    有5位网友表示赞同!

请在乎我1秒

用Python做3D直方图,再也不用担心数据可视化了!

    有16位网友表示赞同!

七夏i

3D直方图,让数据分析更直观,更具说服力!

    有17位网友表示赞同!

情字何解ヘ

Python真是数据分析的利器!

    有18位网友表示赞同!

白恍

这个教程让我对3D直方图有了更深的认识。

    有13位网友表示赞同!

刺心爱人i

Python数据可视化,简直是科研工作者的福音!

    有6位网友表示赞同!

眉黛如画

强烈推荐这个教程,简单易懂,实用性强!

    有6位网友表示赞同!

最迷人的危险

3D直方图,让数据分析变得更有趣!

    有9位网友表示赞同!

弃我者亡

Python实现3D直方图,真是太方便了!

    有5位网友表示赞同!

强辩

这个3D直方图,让我对数据有了更深刻的理解!

    有5位网友表示赞同!

温柔腔

学到了,用Python创建3D直方图,太实用了!

    有5位网友表示赞同!

有些人,只适合好奇~

Python数据可视化,真是太美妙了!

    有14位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/4396.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666