Как создать график Matplotlib с двумя осями Y

Как создать график Matplotlib с двумя осями Y

Самый простой способ создать график Matplotlib с двумя осями Y — использовать функцию twinx() .

В следующем примере показано, как использовать эту функцию на практике.

Пример: создание графика Matplotlib с двумя осями Y

Предположим, у нас есть следующие два Pandas DataFrames:

import pandas as pd

#create DataFrames
df1 = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
 'sales': [14, 16, 19, 22, 24, 25, 24, 24, 27, 30]})

df2 = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
 'leads': [4, 4, 4, 5, 4, 5, 7, 8, 5, 3]})

Оба кадра данных используют переменную «год», которая находится в диапазоне от 1 до 10, но первый кадр данных отображает общий объем продаж каждый год, а второй кадр данных отображает общее количество потенциальных клиентов каждый год.

Мы можем использовать следующий код для создания графика Matplotlib, который отображает продажи и потенциальных клиентов на одной диаграмме с двумя осями Y:

import matplotlib.pyplot as plt

#define colors to use
col1 = 'steelblue '
col2 = 'red '

#define subplots
fig,ax = plt.subplots()

#add first line to plot
ax.plot(df1.year , df1.sales , color=col1)

#add x-axis label
ax.set_xlabel('Year', fontsize= 14 )

#add y-axis label
ax.set_ylabel('Sales', color=col1, fontsize= 16 )

#define second y-axis that shares x-axis with current plot
ax2 = ax.twinx ()

#add second line to plot
ax2.plot(df2. year , df2. leads , color=col2)

#add second y-axis label
ax2.set_ylabel('Leads', color=col2, fontsize= 16 )
Matplotlib с двумя осями Y

Ось Y в левой части графика показывает общий объем продаж по годам, а ось Y в правой части графика показывает общее количество лидов по годам.

Синяя линия на графике представляет общий объем продаж по годам, а красная линия — общее количество лидов по годам.

Не стесняйтесь использовать аргументы marker и linewidth для изменения внешнего вида линий на диаграмме:

import matplotlib.pyplot as plt

#define colors to use
col1 = 'steelblue '
col2 = 'red '

#define subplots
fig,ax = plt.subplots()

#add first line to plot
ax.plot(df1.year , df1.sales , color=col1, marker='o', linewidth= 3 )

#add x-axis label
ax.set_xlabel('Year', fontsize= 14 )

#add y-axis label
ax.set_ylabel('Sales', color=col1, fontsize= 16 )

#define second y-axis that shares x-axis with current plot
ax2 = ax.twinx ()

#add second line to plot
ax2.plot(df2. year , df2. leads , color=col2, marker='o', linewidth= 3 )

#add second y-axis label
ax2.set_ylabel('Leads', color=col2, fontsize= 16 ) 

Обратите внимание, что обе линии стали шире и содержат маркеры «o» для отображения отдельных точек данных.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Matplotlib:

Как настроить положение метки оси в Matplotlib
Как установить диапазоны осей в Matplotlib
Как установить значения оси X в Matplotlib

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.