太阳耀斑数据集:按时间值统计各类别出现次数及绘图方法咨询
解决太阳耀斑数据集的统计与绘图问题
1. 统计每个时间值下各类别的出现次数
假设你的DataFrame包含time(时间值,如1997.87)和category(耀斑类别,如M5-M9.9)两列,用Pandas可以快速生成统计结果:
import pandas as pd # 方法1:交叉表统计(直观呈现时间-类别对应次数) count_df = pd.crosstab(flare_df['time'], flare_df['category']) # 方法2:分组统计(更灵活,适合后续扩展) count_df = flare_df.groupby(['time', 'category']).size().unstack(fill_value=0)
执行后count_df会是一个二维表,每行对应一个时间值,每列对应一个耀斑类别,单元格值就是该时间点该类别的耀斑次数。比如你提到的1997.87对应的M5-M9.9列值为4,1998.87对应的X1-X5列值为5、X5-X10列值为1。
2. 绘制指定时间点的耀斑次数图表
如果只需要绘制单个时间点(如1997.87,Y轴为4)的散点图,用Matplotlib实现:
import matplotlib.pyplot as plt # 提取目标时间点的对应类别次数 target_count = count_df.loc[1997.87, 'M5-M9.9'] # 绘制散点图 plt.scatter(x=[1997.87], y=[target_count], s=120, color='darkred') plt.xlabel('时间值') plt.ylabel('耀斑次数') plt.title('1997.87 时段 M5-M9.9 级耀斑发生次数') plt.grid(axis='y', linestyle='--') plt.show()
如果需要可视化所有时间点的各类别次数,推荐绘制分组柱状图:
# 分组柱状图展示所有时间点的各类别次数 count_df.plot(kind='bar', figsize=(12, 7), rot=45) plt.xlabel('时间值') plt.ylabel('耀斑次数') plt.title('各时段不同级别太阳耀斑发生次数统计') plt.legend(title='耀斑级别', bbox_to_anchor=(1.05, 1), loc='upper left') plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Sander
相关产品推荐
相关产品推荐

