首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用文本文件中的值在python中创建曲面图?

如何使用文本文件中的值在python中创建曲面图?
EN

Stack Overflow用户
提问于 2018-07-22 01:37:02
回答 1查看 54关注 0票数 0

我正在尝试从一个四列700行的文本文件中获取3D曲面图。我已经编写了下面的代码来生成该图,但我不断地收到以下错误:

代码语言:javascript
复制
invalid value encountered in true_divide

z = (x*y*mlim)/(x*y)

raise ValueError("Argument Z must be 2-dimensional.")

ValueError: Argument Z must be 2-dimensional.

以下是我的代码

代码语言:javascript
复制
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np


f2 = open('openfile.txt', 'r')
i6 = list()
i9 = list()
i10 = list ()
count = 0
while True:
    a = f2.readline()
    if not a: break
    v = a.split()
    i6.append(float(v[0]))
    i9.append(float(v[1]))
    i10.append(float(v[3]))
    count = count + 1


mlim = np.array(i6)
ira = np.array(i9)
dec = np.array(i10)

x = ira
y = dec
z = (x*y*mlim)/(x*y)



fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(x,y,z, rstride=10, cstride=10)
plt.savefig('filesave.png')
plt.close()

我该如何解决这个问题?我还附上了实际文本文件click here的图像

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-22 08:38:59

要绘制3D表面,在你的例子中是线框,你必须在之前创建一个网格(也称为矩阵),以便在你的函数(x*y*mlim)/(x*y)中映射它。

以下更改可能会解决您的问题:

代码语言:javascript
复制
# More of your code above this

x = ira
y = dec

# Create a meshgrid
X, Y = np.meshgrid(x,y)

# Now you can build you z array using the correct mapping
# Note that mlim variable works as an scalar
z = (X*Y*mlim)/(X*Y)

上面@Koustav的评论也是中肯的。在除法的情况下,检查空值/零值是很重要的。

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

https://stackoverflow.com/questions/51458561

复制
相关文章

相似问题

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