分类数据“matplotlib”图中的差距

问题描述 投票:0回答:1

当我有数值数据时,比如按某种时间进行索引时,可以直接绘制数据中的间隙。例如,如果我在时间 1、2、3、5、6、7 处有值,我可以在时间 4 处设置

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()

gap, numerical

这肯定比跳过时间 4 的选择要好!

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

no gap, numerical

但是,我现在有一个

y
分类变量。大多数情况下,绘图很简单:只需使用类别作为
y

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

no gap, categorical

这会将类别放在 y 轴上,正如我想要的那样。然而,当我使用

np.nan
技巧来获得间隙时,我会在
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()

np.nan does not produce a gap

如何让我的图在 1、2、3 上进行

cat
cat
dog
,然后在 5、6、7 上进行
dog
cat
cat
,在 4 处留下间隙?

python numpy matplotlib plot
1个回答
0
投票

要在分类图中创建间隙,请以不同的方式处理

np.nan
,因为
matplotlib
本身不会在分类上下文中解释
np.nan

解决方案:分割数据,然后分别绘制每个片段。

x = [1, 2, 3, 5, 6, 7]
y = ["cat", "cat", "dog", "dog", "cat", "cat"]

# Plot each segment separately to introduce a gap
plt.plot(x[:3], y[:3]) 
plt.plot(x[3:], y[3:]) 

Answer image

© www.soinside.com 2019 - 2024. All rights reserved.