matplotlib热图反转数据?

问题描述 投票:4回答:1

这很奇怪,希望有人可以帮助我。我正在尝试使用matplotlib热图绘制数据的密度图,但是我的数据以某种奇怪的方式被反转/旋转。我有一个散点图,然后将这些点归类为密度,但是图像根本不应该显示出来。例如,这是原始散点图,其方向正确:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS82RFVHUy5qcGcifQ==” alt =“原始散点图”>“>

然后是我的热图(请注意,该结构从上方逆时针旋转了90度,但是轴数据是正确的...轴上的数字是根据数据自动生成的,因此,如果您仅反转图片的轴正确显示,但数字全都关闭了:

“方向错误,但轴正确的”>

我只是不知道怎么回事,因为数据解析例程与我刚生成散点图时的解析过程相同。我想这一定是热图图的编码方式,但我不知道细分的位置。我已经尝试解决热图的内置原点放置(左上角),但无法解决。代码如下(首先对所有数据进行解析):

import numpy as np
from numpy import ndarray
import matplotlib.pyplot as plt
import matplotlib
import atpy
from pylab import *

twomass = atpy.Table()

twomass.read('/Raw_Data/IRSA_downloads/2MASS_GCbox2.tbl')


hmag = list([twomass['h_m']])
jmag = list([twomass['j_m']])
hmag = np.array(hmag)
jmag = np.array(jmag)
colorjh = np.array(jmag - hmag)

idx_c = (colorjh > -1) & (colorjh < 6)  #manipulate desired color quantities here
idx_h = (hmag > 8) & (hmag < 18)
idx = idx_c & idx_h

现在是热图代码:

heatmap, xedges, yedges = np.histogram2d(colorjh[idx], hmag[idx], bins=500)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]

plt.clf()
plt.imshow(heatmap, extent=extent)

plt.xlabel('Color(J-H)', fontsize=15)           #adjust axis labels here
plt.ylabel('Magnitude (H)', fontsize=15)

plt.gca().invert_yaxis()

plt.legend(loc=2)
plt.title('CMD for Galactic Center (2MASS)', fontsize=20)
plt.grid(True)
plt.show()

我对Python来说还很陌生,所以解释的术语越少,我越有可能能够很好地利用它。谢谢大家的帮助。

这很奇怪,希望有人可以帮助我。我正在尝试使用matplotlib热图绘制数据的密度图,但是我的数据以某种奇怪的方式被反转/旋转。我有一个...

python numpy matplotlib heatmap astronomy
1个回答
7
投票

您的问题似乎与np.histogram2d的工作方式有关。从documentation

请注意,直方图不遵循笛卡尔约定,其中x

© www.soinside.com 2019 - 2024. All rights reserved.