gpt4 book ai didi

python - 从三个列表中绘制热图 : X, Y,强度

转载 作者:太空狗 更新时间:2023-10-29 21:31:06 25 4
gpt4 key购买 nike

当我有 x、y、强度时,我不知道如何创建热图(或等高线图)。我有一个看起来像这样的文件:

0,1,6
0,2,10
....

到目前为止:

with open('eye_.txt', 'r') as f:
for line in f:
for word in line.split():
l = word.strip().split(',')
x.append(l[0])
y.append(l[1])
z.append(l[2])

尝试使用 pcolormesh 但它需要一个形状对象,我不确定如何将这些列表转换为 NumPy 数组。

我试过:

i,j = np.meshgrid(x,y)
arr = np.array(z)
plt.pcolormesh(i,j,arr)
plt.show()

它告诉我:

IndexError: too many indices

有人能阻止我用头撞键盘吗?

最佳答案

好的,还有几个步骤。

首先,一种更简单的读取数据文件的方法是使用 numpy.genfromtxt .您可以使用 delimiter 参数将分隔符设置为逗号。

下一步,我们要制作一个 xy 的二维网格,所以我们只需要将这些唯一值存储到数组中以提供给 numpy.meshgrid.

最后,我们可以使用这两个数组的长度来 reshape 我们的 z 数组。

(注意:此方法假设您有一个规则网格,网格上的每个点都有一个 xyz) .

例如:

import matplotlib.pyplot as plt
import numpy as np

data = np.genfromtxt('eye_.txt',delimiter=',')

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

## Equivalently, we could do that all in one line with:
# x,y,z = np.genfromtxt('eye_.txt', delimiter=',', usecols=(0,1,2))

x=np.unique(x)
y=np.unique(y)
X,Y = np.meshgrid(x,y)

Z=z.reshape(len(y),len(x))

plt.pcolormesh(X,Y,Z)

plt.show()

关于python - 从三个列表中绘制热图 : X, Y,强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33942700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com