如何在一个图中绘制散点图和线图作为子图?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个图中绘制散点图和线图作为子图?相关的知识,希望对你有一定的参考价值。

我有以下代码:

对于散点图:

plt.scatter(x_1.values[y_ocsvm1 == 1, 2], scaled_array[y_ocsvm1 == 1, 0], c = 'red', label = 'cluster1')
plt.scatter(x_1.values[y_ocsvm1 == -1, 2], scaled_array[y_ocsvm1 == -1, 0], c = 'blue', label = 'cluster2')
plt.ticklabel_format(useOffset=False)
plt.yticks(np.arange(min(scaled_array[:,[0]]), max(scaled_array[:,[0]]), 0.05))
plt.legend()
plt.show()

这给了我:enter image description here

对于线图:

plt.plot(x, y)

这给了我:

enter image description here

我想将这两个作为子图绘制在同一个图中(垂直堆积图)。

我想知道如何做到这一点

谢谢

编辑:

我试过做:

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
ax1.plot(x, y)
ax2.plot(plt.scatter(x_1.values[y_ocsvm1 == 1, 2], scaled_array[y_ocsvm1 == 1, 0], c = 'red', label = 'cluster1')
, plt.scatter(x_1.values[y_ocsvm1 == -1, 2], scaled_array[y_ocsvm1 == -1, 0], c = 'blue', label = 'cluster2'))

它给了我想要的情节如下:enter image description here

但它也显示以下错误:

TypeError: float() argument must be a string or a number, not 'PathCollection'
答案

请尝试以下方法

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)

ax1.plot(x, y)

ax2.scatter(x_1.values[y_ocsvm1 == 1, 2], scaled_array[y_ocsvm1 == 1, 0], 
            color='red', label='cluster1')
ax2.scatter(x_1.values[y_ocsvm1 == -1, 2], scaled_array[y_ocsvm1 == -1, 0], 
            color='blue', label='cluster2')

plt.legend() # To show the legend

以上是关于如何在一个图中绘制散点图和线图作为子图?的主要内容,如果未能解决你的问题,请参考以下文章

一张图绘制多组散点图和折线图

如何用R画折线图,散点图,平滑曲线图

Fig4-a ggplot2绘制箱线图叠加散点图2020-12-14

R语言使用plot函数和lines函数可视化并排的散点图和折线图(line charts)如果把从左到右移动的散点图中的点连接起来,你就有了一个线图

同一组数据在Excel中分别画散点图和折线图,在做线性处理(添加趋势线),为啥得出的结果(斜率)不一样

如何将excel的一组数据既做成散点图又做成条状图,意思就是散点图和条状图在一个图里