您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python导入txt表文件中的轮廓图

Python导入txt表文件中的轮廓图

我的评论的后续内容…首先,我将替换所有这些行:

data = np.loadtxt(r'dataa.txt')

a = [data[:,0]]
b = [data[:,1]]
n = [data[:,2]]

x = np.asarray(a)
y = np.asarray(b)
z = np.asarray(n)

带有:

x, y, z = np.genfromtxt(r'dataa.txt', unpack=True)

您的原始代码是在前面添加一个额外的轴,因为这[data[:,0]]是带有一个元素的数组的列表。结果x.shape将是(1, N)if(N,)。所有这些都可以使用上面的最后一行自动完成,或者您可以使用相同的data加载并说:

x = data[:,0]
y = data[:,1]
z = data[:,2]

因为这些切片将为您提供阵列。

但是,您还没有完成,因为plt.contour希望您为其提供一个2d数组z,而不是一个1d值数组。现在,您似乎z在给x, y定点具有值,但是contour希望您给它一个2d数组,例如图像。

之前,我可以回答这个问题,我需要知道如何xy间隔。如果有规律的话,您可以很容易地填充一个数组。如果不定期,则基本上必须先进行插值,然后才能绘制轮廓图。

要进行插值,请使用

import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate

N = 1000 #number of points for plotting/interpolation

x, y, z = np.genfromtxt(r'dataa.txt', unpack=True)

xi = np.linspace(x.min(), x.max(), N)
yi = np.linspace(y.min(), y.max(), N)
zi = scipy.interpolate.griddata((x, y), z, (xi[None,:], yi[:,None]), method='cubic')

fig = plt.figure()
plt.contour(xi, yi, zi)
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
python 2022/1/1 18:38:37 有252人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶