Как создать график 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 )
Ось 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