首页 > 解决方案 > 重叠两个图时matplotlib的奇怪行为

问题描述

首先我有这些数据,情节还可以

dic={'x': {0: '1', 1: '3', 2: '4', 3: '7', 4: '9', 5: '10', 6: '11', 7: '13', 8: '14', 9: '16'},
    'y': {0: '0', 1: '0', 2: '0', 3: '1', 4: '0', 5: '1', 6: '1', 7: '1', 8: '1', 9: '1'}}

df = pd.DataFrame(dic)

plt.scatter(df["x"],df["y"])

在此处输入图像描述

然后我有这些数据,情节也很好

y2=np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1])

xsimul=np.linspace(0,16,200).reshape(-1,1)
plt.plot(xsimul,y2)

在此处输入图像描述

但是当我尝试在一个图中一起创建两个图时

plt.plot(xsimul,y2)
plt.scatter(df["x"],df["y"])

我得到了这个情节

在此处输入图像描述

我的代码有什么问题?

标签: pythonmatplotlib

解决方案


字典中的数据点是字符串。在制作绘图之前,必须将它们转换为整数。这可以通过使用astype(). 这会产生所需的图。

df["x"] = df["x"].astype(int)
df["y"] = df["y"].astype(int)

在这种情况下,完整的 DataFrame 可以转换为整数。

df = df.astype(int)

推荐阅读