具有2D数组的3D图python matplotlib [英] 3D plot with an 2D array python matplotlib

查看:117
本文介绍了具有2D数组的3D图python matplotlib的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个1D数组,分别带有x和y的值,还有一个2d数组,每个点具有z的值,其中列对应于x值,行对应于y值.有什么办法可以使用此数据获取plot_surface吗?当我尝试这样做时,它不会返回任何情节.这是代码:(calculate_R是我为程序创建的函数)

I have 2 1D arrays with the values of x and y, and also a 2D array with the values of z for each point where the columns correspond to the x values and the rows to the y values. Is there any way to get a plot_surface with this data? when I try to do it it returns me no plot. Here is the code: (calculate_R is a function I made for the program)

x=np.arange(0,10,1)
y=np.arange(0,1,0.2)
lx= len(x)
ly=len(y)

z=np.zeros((lx,ly))

for i in range(lx):
    for j in range(ly):
        z[i,j]=calculate_R(y[j],x[i])

fig = plt.figure()
ax = Axes3D(fig)
x, y = np.meshgrid(x, y)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='hot')

推荐答案

您忘记了调用 plt.show() 显示您的图.

You forgot to call plt.show() to display your plot.

请注意,您也许可以利用numpy向量化来加快z的计算:

Note that you might be able to exploit numpy vectorization to speed up the calculation of z:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D

x = np.arange(0,10,1)
y = np.arange(0,1,0.2)

xs, ys = np.meshgrid(x, y)
# z = calculate_R(xs, ys)
zs = xs**2 + ys**2

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(xs, ys, zs, rstride=1, cstride=1, cmap='hot')
plt.show()

在这里,由于您没有提供完整的示例,因此我使用了一个简单的函数.

Here, I used a simple function, since you didn't supply a fully working example.

这篇关于具有2D数组的3D图python matplotlib的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆