python-matplotlib 3d线框图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-matplotlib 3d线框图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1278字,纯文字阅读大概需要2分钟。
内容图文
是的,所以我有一个x值,y值和z值的列表(我想我已经转换为数组了?),我想绘制一个表面图,但是它不起作用.
这就是我想要做的,您可以忽略大部分代码,因为它们是无关紧要的-只看最后我有xdis,ydis和dist的地方,以及试图绘制atm的地方,我得到了ValueError:需要超过1个值才能解压:(.非常感谢.
from math import *
from numpy import *
import pylab
def sweep (v,p,q,r,s):
a=.98
for i in range (1, len(v)-1):
for j in range (1, len(v)-1):
c =0.0
if i==p and j==q: c =1.0
if i==r and j==s: c= -1.0
v[i,j]=(v[i -1,j]+v[i+1,j]+v[i,j -1]+v[i,j+1]+c-a*v[i,j])/(4-a)
def main():
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
ydis=[]
xdis=[]
resis=[]
for j in range(2,18):
for i in range(2,18):
v= zeros ((20,20),float )
p=q=9
r=i
s=j
dv =1.0e10
lastdv =0
count =0
while (fabs(dv - lastdv)>1.0e-7*fabs(dv)):
lastdv =dv
sweep(v,p,q,r,s)
dv=v[p,q]-v[r,s]
resis.append(dv)
xdis.append(r-p)
ydis.append(s-q)
X=array(xdis)
Y=array(ydis)
Z=array(resis)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X,Y,Z)
plt.show()
main()
解决方法:
plot_wireframe需要三个2D数组(X,Y,Z)作为输入.所以,
后:
X=np.array(xdis)
Y=np.array(ydis)
Z=np.array(resis)
加:
X=X.reshape((-1,16))
Y=Y.reshape((-1,16))
Z=Z.reshape((-1,16))
内容总结
以上是互联网集市为您收集整理的python-matplotlib 3d线框图全部内容,希望文章能够帮你解决python-matplotlib 3d线框图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。