• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

python - 轻松学会Matplotlib 3D绘图

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

大多数数据可视化教程都给出了大致相同的基本内容:散点图,折线图,箱形图,条形图和热图等,一般都是2D平面图。

但是,如果我们希望跟进一步,该怎么办? 2D图只能显示一对x–y轴之间的关系;而3D图可以让我们探索3对轴XyXzyz

在本文中,我将向您简要介绍使用Matplotlib进行3D数据可视化的方法。

3D散点图和线图[Scatter图和Line图]

Matplotlib中的3D绘图通过启用实用程序工具包开始。通过pip安装时,mplot3d库随您的标准Matplotlib安装一起提供。只要确保您的Matplotlib版本超过1.0。

导入此子模块后,对于Matplotlib中的任何常规轴创建函数,可以通过传递projection=”3d”关键字来创建3D图,:

from mpl_toolkits import mplot3d

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.axes(projection=”3d”)

plt.show()

现在,我们的轴已创建,我们可以开始以3D绘图。 3D绘图功能非常直观:scatter我们称之为scatter3D,而不是仅通过Xy数据,我们越过Xyz。其他所有功能设置(例如颜色和线型)均与2D绘图功能相同。

这是绘制3D线和3D点的示例。

fig = plt.figure()
ax = plt.axes(projection="3d")

z_line = np.linspace(0, 15, 1000)
x_line = np.cos(z_line)
y_line = np.sin(z_line)
ax.plot3D(x_line, y_line, z_line, ‘gray’)

z_points = 15 * np.random.random(100)
x_points = np.cos(z_points) + 0.1 * np.random.randn(100)
y_points = np.sin(z_points) + 0.1 * np.random.randn(100)
ax.scatter3D(x_points, y_points, z_points, c=z_points, cmap=’hsv’);

plt.show()

这是有关3D绘图的最棒的部分:互动性。一旦以3D绘图,绘图的交互性对于探索可视化数据非常有用。看看我通过在图上进行简单的click-and-drag创建的一些不同视图!

曲面图[Surface图]

曲面图对于可视化整个3D场景中3个变量之间的关系非常有用。他们给出了完整的结构,并介绍了每个变量的值如何沿其他两个变量的轴变化。

在Matplotlib中构建曲面图是一个三步过程。

(1)首先,我们需要生成构成曲面图的实际点。现在,生成所有3D表面的点是不可能的,因为它们的数目是无限的!因此,我们将生成足够的数据来估计表面,然后推断其余点。我们将定义Xy点,然后使用函数计算z点。

fig = plt.figure()
ax = plt.axes(projection="3d")
def z_function(x, y):
    return np.sin(np.sqrt(x ** 2 + y ** 2))

x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)

X, Y = np.meshgrid(x, y)
Z = z_function(X, Y)

(2)第二步是绘制线框,这是我们对表面的估计。

fig = plt.figure()
ax = plt.axes(projection="3d")
ax.plot_wireframe(X, Y, Z, color='green')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

plt.show()

(3)最后,我们将曲面投影到我们的线框估算值上并推断所有点。

ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                cmap='winter', edgecolor='none')
ax.set_title('surface');

漂亮吧!这就是我们丰富多彩的3D曲面!

3D条形图[bar图]

条形图在数据可视化项目中经常使用,因为它们能够以简单直观的方式传达信息,通常是某种类型的比较。 3D条形图的优点在于,它们在保持2D条形图的简单性的同时又扩展了表示比较信息的能力。

条形图中的每个条总是需要两件事:位置和大小。借助3D条形图,我们将为所有三个变量提供该信息x,y,z

请查看下面的代码和3D图以获取示例!

fig = plt.figure()
ax = plt.axes(projection="3d")

num_bars = 15
x_pos = random.sample(xrange(20), num_bars)
y_pos = random.sample(xrange(20), num_bars)
z_pos = [0] * num_bars
x_size = np.ones(num_bars)
y_size = np.ones(num_bars)
z_size = random.sample(xrange(20), num_bars)

ax.bar3d(x_pos, y_pos, z_pos, x_size, y_size, z_size, color=’aqua’)
plt.show()



鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
python - 如何在Keras中从HDF5文件加载模型?发布时间:2022-05-14
下一篇:
python - 如何在Tensorflow中按层(Layer)设置学习率?发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap