matplotlib热图反转数据?

Tea*_*hey 4 physics numpy matplotlib astronomy heatmap

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

原始散点图

然后,这里是我的热图(注意,该结构是从上面逆时针旋转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
Run Code Online (Sandbox Code Playgroud)

现在这里是热图代码:

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()
Run Code Online (Sandbox Code Playgroud)

我对Python很陌生,所以解释越少,我就越有可能充分利用它.感谢您提供的任何帮助.

Kel*_*sey 7

你的问题似乎与np.histogram2d工作方式有关.从文档:

请注意,直方图不遵循笛卡尔惯例,其中x值在横坐标上,y值在纵坐标轴上.相反,x沿阵列的第一维(垂直)进行直方图编制,y沿阵列的第二维(水平)进行直方图.这确保了兼容性histogramdd.

运用

extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]
Run Code Online (Sandbox Code Playgroud)

相反应该给你你期望的.反向colorjh[idx]hmag[idx]你的histogram2d,如果你想保持相同的方向作为散点图电话也是如此.