将array数组画成bar图python_python – 在NumPy数组中绘制3D图像

我认为主要的问题是,每个点确实有4个信息,所以你实际上是在一个4维物体中.绘制这一点总是很困难(甚至可能是不可能的).我建议使用以下解决方案之一:

>您将问题更改为:我没有在x,y,z的所有组合中进行分析,而只是在那些中,z = f(x,y)

>你改变了你的绘制精度,说你不需要100级z,但只有5级,那么你只需要制作你已有的5个图.

如果你想使用第一种方法,那么有几种子方法:

A.绘制2-dim表面f(x,y)= z并用T对其进行着色

B.使用用于绘制复杂函数的任何技术,有关详细信息,请参阅here.

方法1.A给出的图(我认为是最好的解决方案),z = x ^ 2 y ^ 2得出:

我用过这个程序:

import numpy as np

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import matplotlib as mpl

X, Y = np.mgrid[-10:10:100j, -10:10:100j]

Z = (X**2+Y**2)/10 #definition of f

T = np.sin(X*Y*Z)

norm = mpl.colors.Normalize(vmin=np.amin(T), vmax=np.amax(T))

T = mpl.cm.hot(T) #change T to colors

fig = plt.figure()

ax = fig.gca(projection='3d')

surf = ax.plot_surface(X, Y, Z, facecolors=T, linewidth=0,

cstride = 1, rstride = 1)

plt.show()

第二种方法给出了类似的东西:

随着代码:

norm = mpl.colors.Normalize(vmin=-1, vmax=1)

X, Y= np.mgrid[-10:10:101j, -10:10:101j]

fig = plt.figure()

ax = fig.gca(projection='3d')

for i in np.linspace(-1,1,5):

Z = np.zeros(X.shape)+i

T = np.sin(X*Y*Z)

T = mpl.cm.hot(T)

ax.plot_surface(X, Y, Z, facecolors=T, linewidth=0, alpha = 0.5, cstride

= 10, rstride = 10)

plt.show()

注意:我将函数更改为T = sin(X * Y * Z),因为除以X * Y * Zmakes函数行为不好,因为你将两个数字除以非常接近0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值