matplotlib中的Map不正确

wko9yo5t  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(161)

我对这个代码有一些问题。我想通过使用一些x和y数据绘制一个热图,这些数据被给定并存储在一个Excel文件中,而z数据我必须提取到另一个Excel文件中。
然而,生成的图具有交替的正确行和不正确行,因此对于从左下到右上应该具有明亮特征的Map,结果实际上是“x”1
这些是坐标的一部分,只是作为一个例子(它们基本上从左到右开始,直到行尾,然后从右到左向上移动)2
然后您可以看到该图应该是什么样子(您可以使用左下角的深蓝色和红色点作为参考)3
我不明白为什么它不遵循与Excel文件中的值相同的顺序,因为电子表格中的每一行都引用了正确的点。
谢谢你的时间

pathxy=(r'C:\Users\goofy\OneDrive\PhD\Results\No of measured data point.xlsx')
xy_df = pd.read_excel(pathxy)
x = xy_df['x'].values
y = xy_df['y'].values
data=min_df['Ec'].values

n = int(np.sqrt(len(data)))
zz = np.reshape(data, (n, n))
plt.xlim(x.min(), x.max())
plt.ylim(y.min(), y.max())

plt.imshow(zz, cmap='viridis', extent=[x.min(), x.max(), y.max(), y.min()])
plt.colorbar()
plt.show()

Partial dataset
Incorrect plot from python
How it should look like

unguejic

unguejic1#

来阐述我的一个评论

import numpy as np
import matplotlib.pyplot as plt

nrow = 10; ncol = 8
fig, (ng, ok) = plt.subplots(ncols=2, figsize=(ncol, nrow/2), layout='tight')

# x, y arrays
# make x as in your excel ፨ that is, boustrophedon ፨
x = np.concatenate([np.arange(ncol)[::i] for i in [1, -1]*(nrow//2)])
y = np.concatenate([[i]*ncol for i in range(nrow)])

# a simple function of x, y - reshaped appropriately for imshow
z = (x+y).reshape(nrow, ncol)

ng.imshow(z, origin='lower')
ng.set_title('''\
It's not what I thought and it's not what I pictured
When I was imagining my zed''', fontsize='small') # youtu.be/xE-A0cNSLmc?t=34

# reorder z to have imshow pleased
for row in z[1::2]: row[::] = row[::-1]

ok.imshow(z, origin='lower')
ok.set_title('… but this is it', fontsize='small')

plt.show()

相关问题