Genom att minska mellanrummet mellan staplarna i ett stapeldiagram har man till slut skapat ett histogram. Det tänkte jag vi skulle göra här och nu med Plotly Express.
Vi fortsätter med TBE-statistiken. Du kan läsa mycket mer om TBE i det här inlägget. Hur ska man tänka för att det här ska gå så smidigt som möjligt? Vi stolpar upp vad vi behöver:
- Importera paket
- Importera data
- Skapa en figur med staplar (bars)
- Välja färgskala
- Minska mellanrummet mellan staplarna
- Snygga till och skapa titlar
- Visa figuren
Importera paket
import pandas as pd import plotly.express as px
Vi behöver alltså Pandas för att kunna importera datan från vårt Excelblad. Dessutom behöver vi förstås Plotly Express. Som vanligt importerar vi det och kallar det för px så det inte blir så långt att skriva.
Importera data
df = pd.read_excel("TBE_SVE.xlsx")
Det här har vi gjort förr 🙂 Vi skapar en variabel (df) som läser in Excelfilen med Pandas (pd). Filen är densamma som den vi använde i det förra inlägget om Plotly Graph Objects. Du kan ladda ner den där om du vill hänga med!
Skapa figuren
fig = px.bar(df, x="year", y="f_sve", color="i_sve", color_continuous_scale='Reds' labels={"i_sve": "Incidens"} )
Är det redan dags att skapa själva figuren? Det gick ju snabbt. Med px.bar skapar vi ett stapeldiagram. Datan ska komma från det vi läst in i variabeln df. På x-axeln vill vi visa informationen från kolumnen “year” och på y-axeln “f_sve” vilket står för antalet totala fall i hela Sverige.
Välja färgskala
Som du ser så är färgskalan glidande (continuous) från vitt till mörkrött. Färgerna är proportionerliga till incidensen. Till höger finns en graderad skala. Det ordnar vi genom att ange att “color” ska vara lika med “i_sve” som är kolumnen i Excelbladet för hela Sveriges incidens av TBE (fall per 100 000 invånare). Inte helt överraskande heter färgskalan jag valt “Reds”. Det finns många andra att välja bland här. Du kan läsa mer i inlägget om Heatmaps.
Minska gapet
För att det ska bli ett histogram och inte ett vanligt stapeldiagram tar vi bort mellanrummet mellan staplarna. Det åstadkoms genom en uppdatering av figurens layout så att mellanrummet är 0,0.
fig.update_layout(bargap=0.0)
Snygga till
Vi ändrar några saker till i layouten för att det ska bli helt perfekt.
fig.layout.plot_bgcolor = "#FFFFFF" fig.update_yaxes(title_text="Antal fall") fig.update_xaxes(title_text="År") fig.update_layout(title="Totalt antal TBE-fall per år i Sverige 2004 – 2021")
Först ställer vi in bakgrundsfärgen till vit. Grundinställningen är en gråblå nyans som inte helt lirar med det röda tycker jag 😉 Sedan får y- och x-axeln rubriker och sist en rubrik till hela diagrammet.
Visa figuren
Som vanligt avslutar vi med att faktiskt visa figuren:
fig.show()
Koden i sin helhet
#imports import pandas as pd import plotly.express as px #dataframe df = pd.read_excel("TBE_SVE.xlsx") #figure fig = px.bar(df, x="year", y="f_sve", color="i_sve", color_continuous_scale='Reds' labels={"i_sve": "Incidens"} ) #snygg.com fig.update_layout(bargap=0.0) fig.layout.plot_bgcolor = "#FFFFFF" fig.update_yaxes(title_text="Antal fall") fig.update_xaxes(title_text="År") fig.update_layout(title= "Totalt antal TBE-fall per år i Sverige 2004 – 2021") #show fig.show()
Lycka till och prova gärna med andra siffror. Vad vill du illustrera? Berätta och visa gärna i kommentarerna!