Matplotlib散点图Datetime X轴刻度重复问题排查
问题分析:Matplotlib绘制Datetime散点图时X轴刻度重复的原因
问题背景
我在Pandas DataFrame中存储了每日计算得到的日间和夜间心率均值,数据结构及类型如下:
数据示例:
date FC_mean_day FC_mean_night 0 2022-12-28 79.43 74.11 1 2022-12-29 74.25 75.00 2 2022-12-30 75.75 74.40 3 2022-12-31 70.91 72.90 4 2023-01-01 68.43 73.00
数据类型:
date datetime64[ns] FC_mean_day float64 FC_mean_night float64 dtype: object
使用Matplotlib绘制散点图后,出现X轴Datetime刻度重复的问题;但当DataFrame中存在某行夜间心率为NaN时,刻度重复问题消失。
原因解析
核心逻辑
这是因为无NaN时,Matplotlib会为两组数据(日间、夜间心率)分别生成X轴刻度,同一日期被重复渲染;而存在NaN时,对应行的数据点被跳过,两组数据的有效X轴日期不再完全匹配,Matplotlib的自动刻度逻辑会合并重复日期,避免重复显示。
具体拆解
- 绘制散点图时,你应该是将
FC_mean_day和FC_mean_night作为两个独立的Y轴系列,共享同一个X轴(date列)。当所有日期的两组数据都非空时,Matplotlib会为每个系列的每个日期创建独立的刻度标记——虽然日期值相同,但底层是两个刻度对象,最终X轴上同一日期会重复显示。 - 当某行存在NaN时,该行不会生成对应的数据点,两组数据的X轴日期集合出现差异。此时Matplotlib在自动生成刻度时,会对所有可见的X轴值进行去重处理,最终每个日期只显示一次刻度。
内容的提问来源于stack exchange,提问作者Tosamoon
相关产品推荐
相关产品推荐

