绘制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
相关产品推荐
相关产品推荐

