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


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

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

Пример. Создайте график Matplotlib с двумя осями Y.

Предположим, у нас есть следующие два кадра данных panda:

 import pandas as pd

#createDataFrames
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]})

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

Мы можем использовать следующий код для создания графика 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 в правой части диаграммы показывает общее количество потенциальных клиентов за год.

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

Не стесняйтесь использовать аргументы маркера и ширины линии , чтобы изменить внешний вид линий на диаграмме:

 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *