Matplotlib два графика разного типа на одном поле

У меня есть pandas dataframe, по которому мне нужно построить графики:

data = [["Jun", 38.42, 1.74, -1.74],
       ["Jul", 33.26, 0.0, -9.47],
       ["Aug", 34.51, 0.0, -3.05],
       ["Sep", 36.49, 0.17, -2.49],
       ["Oct", 35.66, 0.17, -5.3],
       ["Nov", 37.96, 0.0, -2.0]]

df = pd.DataFrame(data = data, columns = ["Month", "Total", "Deposit", "Withdraw"])

Мне необходимо сделать два графика в одном поле с двумя шкалами: ось х - Month первый график: ось y - Total, тип графика line второй график: ось y - ['Deposit', 'Withdraw'], тип графика bar.

На сайте нашла похожее решение и пыталась адаптировать:

import matplotlib.pyplot as plt
import numpy as np

x = df['Month']
a = df['Total']
b = df[['Deposit', 'Withdraw']]

fig, ax = plt.subplots()
ax1 = ax.twinx()
ax.plot(x,a,color='r')
ax1.bar(x,b,color='b')
ax.set_ylabel('Для красного графика')
ax1.set_ylabel('Для синего графика')

При таком коде выдается ошибка: Value Error: shape mismatch: objects cannot be broadcast to a single shape.

Если в переменную b я передаю значения одного столбца (например, Deposit), все работает хорошо. Но если сразу 2 - то нет. По сути, мне нужно объединить два графика:

df['Total'].plot() 
df[['Deposit', 'Withdraw']].plot(kind = 'bar')

Помогите, пжл, с этой задачей


Ответы (1 шт):

Автор решения: passant

Ну нужно - так объедините, в чем вопрос?

ax1 = ax.twinx()
ax.plot(x,a,color='r')
df[['Deposit', 'Withdraw']].plot(kind = 'bar',ax=ax1)

Результат на ваших данныхвведите сюда описание изображения

Другое дело смысл это делать? Но это уже ваш вопрос.

→ Ссылка