首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用mplot3d绘制二维数组

用mplot3d绘制二维数组
EN

Stack Overflow用户
提问于 2012-07-10 16:47:44
回答 4查看 44.3K关注 0票数 19

我有一个二维numpy数组,我想在三维中绘制它。我听说过mplot3d,但是我不能正常工作

这是我想要做的一个例子。我有一个维数为(256,1024)的数组。它应该绘制一个3D图形,其中x轴从0到256,y轴从0到1024,图形的z轴在每个条目上显示数组的值。

我该怎么做呢?

EN

回答 4

Stack Overflow用户

发布于 2012-07-10 16:58:12

听起来您正在尝试创建一个surface图(或者,您可以绘制一个wireframe图或一个filled countour plot

根据问题中的信息,您可以尝试以下内容:

代码语言:javascript
复制
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Set up grid and test data
nx, ny = 256, 1024
x = range(nx)
y = range(ny)

data = numpy.random.random((nx, ny))

hf = plt.figure()
ha = hf.add_subplot(111, projection='3d')

X, Y = numpy.meshgrid(x, y)  # `plot_surface` expects `x` and `y` data to be 2D
ha.plot_surface(X, Y, data)

plt.show()

显然,为了获得合理的表面,您需要选择比使用numpy.random更合理的数据。

票数 21
EN

Stack Overflow用户

发布于 2018-12-03 18:11:22

您可以使用function bar3d尝试3D条形图。

假设你有一个维数为(25,10)的数组A,索引为(i,j)的值是Ai。下面的代码示例可以为您提供一个3D条形图,其中每个条形图的高度为Ai。

代码语言:javascript
复制
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

np.random.seed(1234)
fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')
A = np.random.randint(5, size=(25, 10))

x = np.array([[i] * 10 for i in range(25)]).ravel() # x coordinates of each bar
y = np.array([i for i in range(10)] * 25) # y coordinates of each bar
z = np.zeros(25*10) # z coordinates of each bar
dx = np.ones(25*10) # length along x-axis of each bar
dy = np.ones(25*10) # length along y-axis of each bar
dz = A.ravel() # length along z-axis of each bar (height)

ax1.bar3d(x, y, z, dx, dy, dz)

在我的带有随机种子1234的PC上,我得到了以下图:

但是,使用尺寸(256,1024)为您的问题绘制图形可能会很慢。

票数 2
EN

Stack Overflow用户

发布于 2012-07-10 16:55:02

您可以在Matplotlib gallery的一个示例中找到答案;3D示例位于末尾。

更广泛地说,Matplotlib画廊是一个很好的第一站资源,用于查找如何进行一些绘图。

我看到的示例基本上使用了三个二维数组:一个包含所有的x值,一个包含所有的y值,最后一个包含所有的z值。因此,一种解决方案是创建x和y值的数组(例如,使用meshgrid() )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11409690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档