Matplotlib绘制时间序列图时子图出现贯穿多余横线问题咨询
多余横线出现的原因
核心原因是数据集的时间索引未按时间升序排序:matplotlib绘制折线图时会严格按照数据的存储顺序依次连接点位,如果时间索引乱序,最后一个数据点的时间早于前面的点位,就会出现从晚时间点直接连回早时间点的横跨全图的直线。
除此之外还有两种次要触发可能:
- 原始数据集的索引不是标准DatetimeIndex格式,切片时混入了2019年6-8月之外的异常数据
- 单个站点的流量数据存在空值或者重复时间戳,导致绘图逻辑异常
解决方法
按以下步骤修改代码即可消除多余横线:
- 先将原始数据集的索引转为标准DatetimeIndex并按时间排序
import pandas as pd # 转换索引格式后排序 countData19_gdf.index = pd.to_datetime(countData19_gdf.index) countData19_gdf.sort_index(inplace=True)
- 替换原有夏季数据切片逻辑,显式过滤时间范围避免混入异常值
start = pd.to_datetime("2019-06-01") end = pd.to_datetime("2019-08-31") summersubset = countData19_gdf[(countData19_gdf.index >= start) & (countData19_gdf.index <= end)]
- 循环绘制单站点数据时,先对站点数据排序、删除流量列的空值
for station in stations: # 新增排序、去空值逻辑 station_data = summersubset[summersubset['address'] == station].sort_index().dropna(subset=['volume']) ax[cnt].plot(station_data['volume'], c='green', label='flow') # 后续的标题、坐标轴、刻度、图例等配置代码保持原有逻辑不变 ax[cnt].title.set_text(station) ax[cnt].set_xlabel('Study Date') ...
内容的提问来源于stack exchange,提问作者GeoBeez
相关产品推荐
相关产品推荐

