Matplotlib合并COP轨迹绘图时部分数据未显示的问题
COP轨迹数据Matplotlib绘图不显示问题排查与解决
核心问题分析与对应解决方案
1. 大量集中点无法呈现:坐标轴自动缩放异常
如果数据中存在个别数值极大的异常点,Matplotlib自动调整坐标轴范围时,会把(-1.75, 1.62)附近的密集点压缩到几乎看不见。
- 解决方法:手动锁定坐标轴范围,覆盖目标数据区间:
plt.xlim(-2, 2) # 根据实际数据调整,确保包含(-1.75)的x范围 plt.ylim(1, 2) # 同理调整y轴范围,覆盖1.62附近区域
2. 0-50区间无内容:数据切片或加载错误
大概率是切片时取错了数据范围,或数据加载后存在无效值:
- 先验证数据有效性:打印0-50区间的前几行数据,确认是否有有效值:
print(groundtruth_data[:50]) print(predicted_data[:50]) - 若输出为空/全NaN:检查数据读取逻辑,比如
pd.read_csv是否指定了正确列、是否跳过了表头;若数据是numpy数组,确认切片维度是否正确(如data[:50, 0]取前50个x值)。 - 若数据类型为字符串:转换为数值类型后再绘图:
groundtruth_data = groundtruth_data.astype(float)
3. 绘图逻辑错误
如果用plt.plot()绘制零散点,可能因连线导致视觉上无法区分;或两组数据绘图顺序导致覆盖:
- 改用
plt.scatter()绘制散点,并设置不同样式区分两组数据:plt.scatter(groundtruth_x, groundtruth_y, c='blue', label='Groundtruth', s=5) plt.scatter(predicted_x, predicted_y, c='red', label='Predicted', s=5) plt.legend()
验证步骤
- 单独绘制(-1.75, 1.62)附近的点,确认数据本身无问题;
- 用
groundtruth_data.max()/groundtruth_data.min()检查数据极值,排查是否存在异常大/小值; - 绘制0-50区间前,打印该区间x、y的极值,确认数值在预期显示范围内。
内容的提问来源于stack exchange,提问作者stack offer
相关产品推荐
相关产品推荐

