You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制CMD星等-颜色图时无报错但无输出,求解决方法

解决CMD图绘制无结果的问题

希望绘制一张CMD图,将bp-rp设为横轴、g星等设为纵轴,但运行以下代码后,既未出现报错也未得到任何结果:

import matplotlib.pyplot as plt

def plot_cmd(table):
    y_ekseni = mutlak_magnitude
    x_ekseni = bp-rp

    plt.plot(x, y,  markersize=0.3, alpha=0.3)

    plt.xlim([0, 1.5])
    plt.ylim([14, 22])
    plt.gca().invert_yaxis()

    plt.ylabel('$Magnitude (g)$')
    plt.xlabel('$Color (g-i)$')

你的代码存在几个关键问题,导致没有输出:

  • 变量未关联输入数据:函数接收了table参数,但直接用mutlak_magnitude、bp、rp这些未定义的变量,必须从table里提取对应列的数据,比如table['mutlak_magnitude']
  • 变量名不匹配:定义了x_ekseni、y_ekseni,但绘图时用的是x、y,完全对应不上
  • 缺少图像显示步骤:matplotlib绘图后必须调用plt.show()才会弹出窗口显示图像,或者用plt.savefig()保存到本地
  • 横轴标签错误:你要画的是bp-rp,但标签写的是g-i,和需求不符
  • 绘图类型不合适:原代码用plt.plot默认是线图,星点数据用散点图plt.scatter更合适

修正后的代码如下:

import matplotlib.pyplot as plt

def plot_cmd(table):
    # 从输入表格中提取g星等和bp-rp颜色指数(确保列名和你的数据一致)
    y = table['mutlak_magnitude']
    x = table['bp'] - table['rp']

    # 用散点图展示星点,避免线图的连线问题
    plt.scatter(x, y, markersize=0.3, alpha=0.3)

    plt.xlim([0, 1.5])
    plt.ylim([14, 22])
    plt.gca().invert_yaxis()  # 星等纵轴反转,符合天文学习惯(数值越小星越亮)

    plt.ylabel('$Magnitude (g)$')
    plt.xlabel('$Color (bp-rp)$')  # 修正横轴标签
    
    plt.show()  # 显示图像
    # 可选:保存高清图像
    # plt.savefig('cmd_plot.png', dpi=300, bbox_inches='tight')

内容的提问来源于stack exchange,提问作者Rüya Demirci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:36:23