En introduktion till Matplotlib i Python

By rik

Matplotlib är ett grafiskt bibliotek för Python, frekvent använt av specialister inom maskininlärning för att generera både statiska och dynamiska visualiseringar.

Vad är Matplotlib?

Matplotlib, skapat av John D. Hunter år 2003, lanserades den 8 maj 2021. Den nuvarande versionen är 3.4.2.

Biblioteket är huvudsakligen kodat i Python, medan vissa delar är skrivna i C-objektiv och JavaScript, vilket säkerställer att det är kompatibelt med olika plattformar.

Matplotlib nyttjar NumPy, ett numeriskt Python-tillägg. Denna integration med NumPy ökar dess användbarhet som ett open-source-alternativ, vilket gör det till ett mer attraktivt val än MATLAB.

För GUI-applikationer i Python tillåter Matplotlib att generera statiska visualiseringar genom sitt objektorienterade API.

Användare kan med endast några få rader Python-kod visualisera data med hjälp av olika diagramtyper, såsom spridningsdiagram, histogram, stapeldiagram, cirkeldiagram, linjediagram och boxplots.

Matplotlib kan användas för att skapa diagram i olika miljöer, inklusive Python-skal, Jupyter Notebook, Jupyter Lab, samt i utvecklingsverktyg som Pycharm eller Anaconda, och på webbapplikationsservrar som Flask och Django, över diverse plattformar.

Precis som i MATLAB erbjuder Matplotlib omfattande kontroll över diagrammens utseende, inklusive typsnitt, linjer, färger och stilar.

Efter denna introduktion till Matplotlib-biblioteket i Python, ska vi nu undersöka hur man installerar det på ditt system.

Konfigurera Matplotlib-miljön

Precis som andra Python-paket och bibliotek kan det förkompilerade Matplotlib-biblioteket och dess tillhörande paket installeras på alla operativsystem via pip-pakethanteraren.

Förutsatt att Python och pip-pakethanteraren redan är installerade på ditt system.

Följande kommandon hjälper dig att verifiera om Python och pip redan är installerade genom att visa deras versioner.

Kontrollera Python-installation

Python --version

Kontrollera Pip-installation

pip -V

Installera Matplotlib

Kommandot nedan installerar Matplotlib-paketet från Python Package Index (PyPI).

python -m pip install matplotlib

Detta kommando kommer att ladda ner och installera relevanta paket för Matplotlib. Du bör se ett meddelande om lyckad installation när processen är klar.

För att bekräfta att Matplotlib är installerat kan du använda följande kommando, som visar Matplotlibs version i din kommandotolk.

import matplotlib
matplotlib.__version__

Utvecklare som önskar installera det okompilerade Matplotlib-paketet behöver tillgång till en kompatibel kompilator i sitt system, samt nödvändiga beroenden, installationsskript, konfigurationsfiler och eventuella patchar.

Denna specifika okompilerade installation av Matplotlib kan vara komplicerad, speciellt för nybörjare. Varför inte använda ett enkelt kommando för att installera biblioteket på några få sekunder? 🤔

Efter att Matplotlib är installerat kan du importera paketet till din miljö för att få tillgång till dess funktioner.

Matplotlibs visualiseringsalternativ

Matplotlib erbjuder en mängd olika visualiseringsalternativ för att representera data. Dessutom kan användare anpassa diagrammen med olika teman, färger och paletter.

Dessa visualiseringsalternativ inkluderar:

#1. Stapeldiagram

Stapeldiagram, även kända som kolumndiagram, är lämpliga för att göra kvantitativa jämförelser av värden inom samma kategori.

Matplotlib representerar dessa diagram med rektangulära staplar, där staplarnas längd eller höjd speglar deras proportionella värde. Stängerna kan vara antingen horisontella eller vertikala.

Matplotlib använder funktionen plt.bar() för att skapa stapeldiagram.

Dessutom kan du använda ytterligare funktioner för att justera utseendet. Till exempel används plt.xlabel() och plt.ylabel() för att märka x- respektive y-axeln.

Funktionen plt.title() ger diagrammet en titel, medan plt.savefig() sparar diagrammet. Slutligen visar plt.show() diagrammet på skärmen.

#2. Cirkeldiagram

Ett cirkeldiagram är en bra metod för att visualisera proportionell fördelning av objekt inom samma kategori.

Cirkeldiagram representerar data i procentform. Hela diagrammets yta motsvarar 100 %, medan de enskilda tårtbitarna visar delar av datans procentandel.

Matplotlib använder funktionen plt.pie() som ritar och justerar cirkeldiagrammets parametrar.
Ytterligare parametrar som ’autopct’, som skriver ut värdet på cirkeldiagrammet med upp till en decimal, är användbara för att skapa cirkeldiagram.

Företag använder ofta cirkeldiagram för att presentera relevant information som driftkostnader, försäljning eller resursfördelning.

#3. Histogram

Ett histogram visar distributionen av numeriska data. Det använder kontinuerliga intervall för att dela in data i distinkta segment.

Den huvudsakliga skillnaden mellan ett histogram och ett stapeldiagram är datatypen de hanterar. Histogram används för kontinuerliga data, medan stapeldiagram hanterar kategoriska data.

Matplotlib använder funktionen ’hist()’ som använder slumpmässiga eller fördefinierade värden för att skapa histogrammet.

#4. Linjediagram

Dessa diagram är användbara för att visa relationen mellan två datavärden, där ett datavärde är numeriskt och det andra är kategoriskt, på x- respektive y-axeln.

Linjediagram är viktiga för att följa förändringar i datavärden över tid.

#5. Spridningsdiagram

Spridningsdiagram visar sambandet, inklusive korrelationen, mellan olika variabler. De är också bra för att identifiera avvikande värden.

Spridningsdiagram använder punkter för att illustrera förhållandet mellan datavariabler och hur en förändring i en variabel kan påverka en annan.

Hur man skapar diagram i Matplotlib

Matplotlib använder olika funktioner för att skapa olika diagramtyper. Det kräver också relativt få rader kod för att skapa ett diagram.

Här följer en beskrivning av hur man skapar de olika diagramtyperna med hjälp av olika Matplotlib-funktioner.

#1. Stapeldiagram i Matplotlib

Stapeldiagram, som tidigare beskrivits, visar datakategorier med staplar och axlar som representerar jämförelsen mellan kategorier på en axel och motsvarande värden för dessa kategorier på den andra axeln.

Funktionen ’bar()’ i Matplotlib använder olika argument för att ange staplarnas layout, vilket visas nedan.

plt.bar(x, y, height, width, bottom, align)

Parametrarna x och y representerar x- och y-koordinaterna för staplarna i diagrammet. Parametern ’width’ anger bredden på staplarna, medan ’height’ anger staplarnas höjd.

Låt oss till exempel visualisera antalet hundar och katter i ett djurhem som kallas ’x’.

import matplotlib.pyplot as plt
import numpy as np

x = ["Cats", "Dogs"]
plt.xlabel("Cats and Dogs in Shelter")
plt.ylabel("No. of animals in Shelter")
plt.title("Number of cats and dogs in shelter x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)

Resultat:

Resultat av stapeldiagram i Matplotlib

I exemplet ovan kan du ange färgen på staplarna med hjälp av attributet ’color’. Vidare namnger ’plt.xlabel’ och ’plt.ylabel’ x- respektive y-axeln, medan ’plt.title’ namnger själva diagrammet.

#2. Hur man skapar ett cirkeldiagram

Matplotlib använder funktionen ’pie()’, som medföljer pyplot-modulen, för att rita ett cirkeldiagram.
Funktionen representerar data som ska visualiseras i form av en array.

Syntax:

matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)

Parametern ’colors’ ställer in färgen på tårtbitarna. Du kan ange en färg för varje segment med en array av värden.

För att lägga till detaljer om varje segment i pajen lägger argumentet ’autopct’ till numeriska procentsatser som varje segment representerar med Pythons strängformateringsnotation. Argumentet ’explode’ accepterar en array av värden som börjar från 0,1 för att definiera avståndet mellan tårtbitarna och cirkelns mitt.

Låt oss rita ett cirkeldiagram som visar resursfördelningen i procent för ett visst projekt.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Resources allocated for a random project")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show() 

Resultat:

Resultat av cirkeldiagram i Matplotlib

Diagrammet ovan visar ett cirkeldiagram med fyra segment, märkta w, x, y respektive z. ’explode’-värdena definierar hur långt ifrån cirkelns centrum segmenten ska placeras.

Från diagrammet ovan är segment x placerat längre bort, eftersom dess explode-värde är högre än de andra. Attributet ’shadow’ lägger till en skugga till cirkeldiagrammet, som visas i bilden, medan ’autopct’ anger den relativa procentandelen av hela cirkeln som varje segment representerar.

#3. Skapa ett histogram

Med ett histogram används en serie intervall för att representera intervallet för de givna värdena på x-axeln.
Y-axeln kommer å andra sidan representera frekvensinformationen.

I motsats till andra diagramtyper kräver skapandet av ett histogram i Matplotlib ett antal fördefinierade steg som du måste följa för att rita diagrammet.

Dessa steg inkluderar:

  • Skapa en sekvens av intervall från dina data. Du kan använda funktionen ’np.random.normal()’ för att generera slumpmässiga värden.
  • Använd en serie intervall och fördela värden inom dessa.
  • Räkna antalet värden som hamnar inom varje specifikt intervall.
  • Använd sedan funktionen ’matplotlib.pyplot.hist()’ för att skapa histogrammet.
  • Funktionen ’hist()’ tar emot flera parametrar, inklusive:

    x – Detta representerar arraysekvensen

    ’bins’ – Detta är en valfri parameter som representerar icke-överlappande intervall av variabler, vilka kan vara heltal eller en strängsekvens.

    ’range’ – Definierar övre och nedre gränserna för intervallen.

    ’align’ – Denna parameter styr justeringen av histogrammet, om det ska vara vänster, höger eller centrerat.

    ’color’ – Definierar färgen på staplarna.

    ’rwidth’ – Ställer in den relativa bredden på staplarna i histogrammet.

    ’log’ – Logparametern definierar en logaritmisk skala på axeln i histogrammet.

    Följande exempel skapar ett histogram med definierade värden.

    from matplotlib import pyplot as plt
    
    x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5,  50, 60, 70, 80]
    
    plt.hist(x)
    plt.title('Histogram plot example')
    plt.xlabel('x axis')
    plt.ylabel('frequency')
    plt.show()
    

    Resultat:

    Resultat av histogram i Matplotlib

    #4. Linjediagram i Matplotlib

    Matplotlib använder sitt underbibliotek, pyplot, som erbjuder olika funktioner som underlättar implementeringen.

    Vi använder funktionen ’plot()’, en generisk funktion som ingår i pyplot, för att rita linjediagram och andra linjediagramtyper, inklusive krökta och multipla linjediagram. Skapandet av dessa olika diagramtyper beror på de värden du skickar till y-axeln.

    Vid skapande av ett linjediagram importerar du matplotlib.pyplot och Numpy. Metoden ’plot(x,y)’ skapar linjediagrammet genom att skicka slumpmässiga värden till x- och y-argumenten.

    Du kan dessutom inkludera en etikettvariabel som ger diagrammet en etikett. Funktionen ’title’ sätter en titel på diagrammet, medan funktionerna ’xlabel’ och ’ylabel’ märker axlarna. Slutligen visar funktionen ’show()’ diagrammet.

    Till exempel:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 5, 10)
    
    y = 3*x + 2
    plt.title('Line plot example')
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.plot(x, y)
    plt.show()

    Resultat:

    Resultat av linjediagram i Matplotlib

    Attributet ’np.linspace’ returnerar en uppsättning jämnt fördelade tal över ett visst intervall för x-värden. Detta genererar en array med 10 värden i intervallet 0 och 5. Y-värdena beräknas utifrån en ekvation med motsvarande x-värden.

    Skapa spridningsdiagram

    Matplotlib använder metoden ’scatter()’ för att skapa denna diagramtyp.
    Metoden tar följande parametrar:

    matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None) 

    Parametrarna ’x_axis_data’ och ’y_axis_data’ kan inte lämnas tomma, till skillnad från de andra parametrarna som är valfria och har ’None’ som standardvärde. Argumentet ’x_axis_data’ anger en array med data för x-axeln, medan ’y_axis_data’ ställer in en array med data för y-axeln.

    Exempel på spridningsdiagram i matplotlib:

    import matplotlib.pyplot as plt
     
    x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
     
    y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
    plt.title('Scatter plot example')
    plt.xlabel('x variable')
    plt.ylabel('y variable')
    plt.scatter(x, y, c ="green")
     
    # To show the plot
    plt.show()

    Resultatet kommer att likna detta:

    Resultat av spridningsdiagram i Matplotlib

    Vad är subplot() i Matplotlib?

    Funktionen ’subplot()’ kan användas för att rita flera diagram i en enda Matplotlib-figur. Detta gör det möjligt att visa och jämföra flera diagram i samma figur.

    Denna funktion returnerar en tupel med tre argument: rader och kolumner som första respektive andra argument, samt indexet för det aktuella diagrammet som det tredje argumentet.

    Raderna och kolumnerna anger layouten för Matplotlib-figuren.

    Till exempel kommer ’plt.subplot(2, 1, 1)’ att rita en Matplotlib-figur med två rader och en kolumn, och detta diagram kommer att vara det första.

    Å andra sidan visar ’plt.subplot(2, 1, 2)’ ett andra diagram med två rader och en kolumn.

    Om man ritar dessa två diagram kommer de att placeras ovanpå varandra, som i exemplet nedan.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(2, 1, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(2, 1, 2)
    plt.plot(x,y)
    
    plt.show()

    Resultatet av exemplet ovan kommer att se ut som bilden nedan.

    Med ett annat exempel, låt oss använda subplotsfunktionen för att rita två figurer med en rad och två kolumner. Detta kommer att visa diagrammen sida vid sida.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(1, 2, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(1, 2, 2)
    plt.plot(x,y)
    
    plt.show()

    Exemplet ovan ger följande resultat.

    Visst var det intressant och interaktivt, eller hur? 😃

    Avslutande tankar

    Matplotlib är ett väletablerat visualiseringsbibliotek i Python. Dess interaktivitet och användarvänlighet, även för nybörjare, gör det till ett utmärkt verktyg för att skapa grafer i Python.

    Den här artikeln har visat exempel på de olika diagramtyperna som funktioner i Matplotlib kan skapa, inklusive cirkeldiagram, stapeldiagram, histogram och spridningsdiagram.

    Naturligtvis finns det flera andra bibliotek i Python som experter inom maskininlärning och dataforskare kan använda för att skapa visualiseringar.

    Du kan undersöka fler diagram som du kan skapa med Matplotlib, samt vilka funktioner du använder för att skapa dessa diagram.

    Lycka till med visualiseringen! 📉📊