Jak utworzyć wykres matplotlib z dwiema osiami y
Najłatwiejszym sposobem utworzenia wykresu Matplotlib z dwiema osiami Y jest użycie funkcji twinx() .
Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.
Przykład: Utwórz wykres Matplotlib z dwiema osiami Y
Załóżmy, że mamy następujące dwie ramki danych pandy:
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]})
Obie ramki DataFrame mają wspólną zmienną „rok”, która mieści się w zakresie od 1 do 10, ale pierwsza ramka DataFrame wyświetla całkowitą sprzedaż każdego roku, podczas gdy druga ramka DataFrame wyświetla całkowitą liczbę potencjalnych klientów każdego roku.
Możemy użyć poniższego kodu, aby utworzyć wykres Matplotlib, który wyświetla sprzedaż i potencjalnych klientów na wykresie z dwiema osiami 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 )
Oś Y po lewej stronie wykresu przedstawia całkowitą sprzedaż roczną, a oś Y po prawej stronie wykresu przedstawia całkowitą liczbę potencjalnych klientów rocznie.
Niebieska linia na wykresie przedstawia całkowitą sprzedaż roczną, a czerwona linia przedstawia całkowitą liczbę potencjalnych klientów rocznie.
Możesz swobodnie używać argumentów znacznika i szerokości linii , aby zmienić wygląd linii na wykresie:
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 )
Należy zauważyć, że obie linie są teraz szersze i zawierają znaczniki „o” umożliwiające wyświetlenie poszczególnych punktów danych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w Matplotlib:
Jak dostosować położenie etykiety osi w Matplotlib
Jak ustawić zakresy osi w Matplotlib
Jak ustawić wartości osi X w Matplotlib