You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib分类数据绘图中添加数据间隙?

分类数据Matplotlib绘图保留间隙的解决办法

数值数据的间隙实现方式

处理带时间索引的数值数据时,直接在缺失位置设置np.nan就能生成绘图间隙,效果远优于直接跳过缺失时间点。示例代码如下:

import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y = [10, 20, 30, np.nan, 10, 20, 30]
plt.plot(x, y)
plt.show()
plt.close()

分类数据的问题

但当y为分类数据时,np.nan无法生成间隙,反而会在对应位置绘制点:

import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y = ["cat", "cat", "dog", np.nan, "dog", "cat", "cat"]
plt.plot(x, y)
plt.show()
plt.close()

解决方案:拆分数据分段绘制

要实现x=1-3对应cat、cat、dog,x=5-7对应dog、cat、cat,且在x=4处保留间隙,最直接的方法是将数据拆分为两段连续序列分别绘制:

import numpy as np
import matplotlib.pyplot as plt

# 拆分有效数据为两段连续序列
x1 = [1, 2, 3]
y1 = ["cat", "cat", "dog"]
x2 = [5, 6, 7]
y2 = ["dog", "cat", "cat"]

# 分别绘制两段数据,自动形成间隙
plt.plot(x1, y1)
plt.plot(x2, y2)

# 可选:手动设置y轴分类标签,避免自动排序
plt.yticks(["cat", "dog"])

plt.show()
plt.close()

补充说明

  • Matplotlib的plot()函数只会连接同一次调用中的连续数据点,不同plot()调用的序列之间不会自动衔接,从而自然形成x=4处的间隙。
  • 如果需要两段线条样式完全一致,可在plot()中指定相同的样式参数,比如plt.plot(x1, y1, 'b-o')和plt.plot(x2, y2, 'b-o')。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:26:08