我有一些问题,尽管我在寻找答案,但还是找不到答案。在
目前我的代码如下:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from math import *
from scipy.special import *
import matplotlib.pyplot as plt
import numpy as np
## Definition der Parameter für Druckgleichung nach Rudnicki (1986) ##
q = 6.0/1000
lameu = 11.2*10**9
lame = 8.4*10**9
pi
alpha = 0.65
G = 8.4*10**9
k = 1.0e-15
eta = 0.001
t = 1000*365*24600
kappa = k/eta
print "kappa ist:",kappa
c = ((kappa*(lameu-lame)*(lame+2*G))/((alpha**2)*(lameu+2*G)))
print "c ist:",c
xmin = -10
xmax = 10
ymin = -10
ymax = 10
for x in range (xmin,xmax):
for y in range (ymin,ymax):
r=sqrt(x**2+y**2)
P=(q/(rhof*4*pi*kappa))*(expn(1,r**2/(4*c*t)))
z = P/1e6
print x, y, z
x, y = np.meshgrid(x, y)
## Plotting in 3D ##
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cm.jet, linewidth=0,
antialiased=False, vmin=np.nanmin(z), vmax=np.nanmax(z))
fig.colorbar(surf, shrink=0.5, aspect=5)
## Achsenskalen ##
ax.set_xlim(xmin,xmax) # x-Achsenskala vorgeben
ax.set_ylim(ymin,ymax) # y-Achsenskala vorgeben
## Beschriftung der Achsen ##
ax.set_title('Druckverteilung')
ax.set_xlabel('Distanz zu Well [m]')
ax.set_ylabel('Distanz zu Well [m]')
ax.set_zlabel('Druck in [MPa]')
plt.show()
如果我试着运行这个程序,我的x,y和z的值会显示出来,但是我没有得到任何3D图。我以前也遇到过这个问题,所以我试图定义我的无限值,使z不被视为数字:
^{pr2}$将此添加到代码后,我得到以下错误: 类型错误:'数字浮点数64'对象不支持项分配
这到底是什么意思?我不明白这是怎么回事。我想我的阴谋需要它?在
我的for循环的确切区别是什么,例如使用:
for x in range [-10,10]
以及
for x in range (-10,10)
是吗?
我知道有几种函数使用
P[x,y]=....
而不仅仅是
P=....
是吗?在
我什么时候要用括号?在
我希望有人能让我轻松起来。谢谢!在
回答您的各种问题:
这是因为
z
只是一个数字,而不是数组。在()
和[]
的混淆很简单,您可以使用list
(或任何其他实现__getitem__
的容器类)的元素。您使用call
对象。在基本上,这两个部分的语法是不太方便的版本的简短形式
myObject[key]
产生myObject.__getitem__(key)
,myObject(variable)
产生{通常,它们用于创建函数和容器类(您可能会误用它们,但这会导致一些非常混乱的代码)。在
为了使您的绘图工作,您需要使您的
z
数组具有正确的形状。在您遇到的问题是您没有按要求向^{} 提供数据,它需要2D数据数组。}只是
XX
和{numpy.meshgrid
创建的,iirc、x和y参数可以是直接列表,但我没有尝试过。在无论如何,通常情况下,您的元素如下所示(对于方形网格):
那么
^{pr2}$ZZ
就是对应点上函数的z
值,也就是说,如果你在绘制某个函数,f(x,y)
那么你可以做如下操作:虽然有可能有一些更快的numpy方法来执行阵列操作,但速度会更快。在
我通常会这样做:
^{3}$相关问题 更多 >
编程相关推荐