基于Gaia DR3数据使用Python+SQL绘制准确赫罗图的技术求助
基于Gaia DR3数据使用Python+SQL绘制准确赫罗图的技术求助
大家好,我正在尝试用Python结合SQL调用Gaia DR3的数据绘制赫罗图(HR Diagram),虽然已经获取了上百万个数据点,但始终没法画出和标准赫罗图相似的效果。我怀疑问题出在光度计算的公式部分,想请教各位大佬我到底哪里弄错了?怎样才能生成最准确的赫罗图呢?
我期望能画出类似标准赫罗图的可视化效果(原提问中提及的参考图此处无法展示)。麻烦各位帮我看看,提前谢谢大家了!
我的操作流程与代码:
首先安装依赖:
conda install -c conda-forge astroquery
然后是Python代码:
import numpy as np import matplotlib.pyplot as plt import pandas as pd from astroquery.gaia import Gaia import math from astroquery.utils.tap.core import TapPlus # 查看Gaia可用表 tables = Gaia.load_tables(only_names=True) for table in tables: print(table.name) # 查看目标表结构 meta = Gaia.load_table('gaiadr3.gaia_source_lite') meta for column in meta.columns: print(column.name) # 构造SQL查询获取数据 columns = 'parallax,phot_g_mean_mag,phot_bp_mean_mag,phot_rp_mean_mag,pmra,pmdec' query1_base = """ SELECT top 1000000000 parallax,phot_g_mean_mag,phot_bp_mean_mag,phot_rp_mean_mag,ra,dec,pmra,pmdec FROM gaiadr3.gaia_source_lite AS db """ output_format="votable" query1 = query1_base.format(columns=columns) job = Gaia.launch_job_async(query1) results = job.get_results() # 计算色指数(BP-RP) x_ekseni = results["phot_bp_mean_mag"] - results["phot_rp_mean_mag"] # 尝试计算绝对星等 gorsel_parlaklık = results["phot_g_mean_mag"] parallax = results["parallax"] def calculate_apparent_magnitude(gorsel_parlaklık, parallax): return gorsel_parlaklık -(5*np.log10(1000/parallax)-5) mutlak_magnitude = calculate_apparent_magnitude(gorsel_parlaklık, parallax) print(mutlak_magnitude) # 绘制赫罗图 plt.scatter(x_ekseni, mutlak_magnitude, alpha=1) # plt.xlim([-5, 7]) # plt.ylim([10, 20]) plt.gca().invert_yaxis() plt.ylabel('$Magnitude (g)$') plt.xlabel('$Color (bp-rp)$') plt.show()
我的疑问:
我感觉错误大概率出在绝对星等计算的公式部分,也就是calculate_apparent_magnitude函数里。是不是公式的逻辑搞反了?或者还有其他数据预处理的步骤我漏掉了?
备注:内容来源于stack exchange,提问作者Rüya Demirci
相关产品推荐
相关产品推荐

