Hoe u een matplotlib-plot met twee y-assen maakt


De eenvoudigste manier om een Matplotlib-plot met twee y-assen te maken, is door de functie twinx() te gebruiken.

Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.

Voorbeeld: Maak een Matplotlib-plot met twee Y-assen

Laten we aannemen dat we de volgende twee panda-dataframes hebben:

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

Beide DataFrames delen de variabele „jaar“ die varieert van 1 tot 10, maar het eerste DataFrame geeft de totale omzet per jaar weer, terwijl het tweede DataFrame het totale aantal leads per jaar weergeeft.

We kunnen de volgende code gebruiken om een Matplotlib-plot te maken waarin verkopen en leads worden weergegeven in een diagram met twee Y-assen:

 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 met twee y-assen

De y-as aan de linkerkant van het diagram toont de totale verkopen per jaar en de y-as aan de rechterkant van het diagram toont het totale aantal leads per jaar.

De blauwe lijn in de grafiek vertegenwoordigt de totale omzet per jaar en de rode lijn vertegenwoordigt het totale aantal leads per jaar.

U kunt de argumenten voor marker en lijndikte gebruiken om het uiterlijk van lijnen in het diagram te wijzigen:

 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 ) 

Merk op dat beide lijnen nu breder zijn en „o“-markeringen bevatten om individuele gegevenspunten weer te geven.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Matplotlib kunt uitvoeren:

Hoe de aslabelpositie in Matplotlib aan te passen
Hoe asbereiken in Matplotlib in te stellen
Hoe X-aswaarden in Matplotlib in te stellen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert