Beskrivning
Vattenfallsdiagrammet är ett 2-dimensionellt diagram som används speciellt för att förstå effekterna av inkrementella positiva och negativa förändringar över tid eller över flera steg eller en variabel. Vattenfallsdiagrammen är också kända som Floating Bricks Charts, Flying Bricks Charts.
När Gud tar en dusch vaknar vattenfall till liv runt om i världen. När jag duschar brukar mitt hår täppa till avloppet.
Anthony T Hincks
I den här artikeln kommer vi att se vikten av vattenfallsdiagram och hur man gör dem med de olika biblioteken som Matplotlib, Plotly.
Vattenfall diagram
Vattenfallsdiagrammet används ofta i finansiell analys för att förstå de positiva och negativa effekterna av flera faktorer över en viss tillgång. Diagrammet kan visa effekten baserat på båda tids baserad or kategoribaserad. Kategoribaserade diagram representerar vinst eller förlust över kostnader eller försäljning eller någon annan variabel som har positiva och negativa värden i följd. Tidsbaserade diagram representerar vinsten eller förlusten över tidsperioden.
Vattenfallsdiagrammet är mestadels horisontellt. De utgår från den horisontella axeln och är förbundna med en serie flytande kolumner som är relaterade till negativa eller positiva kommentarer. Ibland är staplarna förbundna med linjer i diagrammen.
Varför behöver vi det
Låt oss ta ett exempel för att förstå när och var man ska använda vattenfallsdiagram eftersom att göra vattenfallsdiagram inte är ett stort problem. Vi kommer att ta lite dummydata och Kaggle-datauppsättningen för att bygga ett vattenfallsdiagram.
Låt oss ta ett exempel
Om jag ger dig en tabell i pandor, inte en normal utan en snygg och ett vattenfallsdiagram, vilket är mer bekvämt att läsa? Berätta för mig?
Denna tabell representerar data för försäljningen för hela en vecka och jag har använt sjöborna biblioteket till skapa värmekartor med background_gradient
importera seaborn som sns # data a = ['mån','tis','wen','tors','fre','lör','sön'] b = [10,-30,-7.5,-25,95 ,7,45,-2] df0 = pd.DataFrame(b,a).reset_index().rename(columns={'index':'values',2:'week'}) # tabell cm = sns.light_palette ("grön", as_cmap=True) dfXNUMX.style.background_gradient(cmap=cm)
Titta nu på tabellen och vattenfallsdiagrammet sida vid sida.
Tabellen visar vikten av värden i ordning, men det är ganska svårt att läsa värdena. Men å andra sidan kan du enkelt se att den gula stapeln visar minskningen och den röda stapeln visar inkremernten.
Vattenfallsdiagram med Plotly
Datan som vi ska använda den är hämtad från Kaggle av Netflix-filmer och TV-program kan anteckningsboken hittas här..
Vi kommer att använda Plotly, ett diagrambibliotek med öppen källkod.
Importera biblioteket
importera plotly.graph_objects som go
dataset
df = pd.read_csv(r'D:/netflix_titles.csv')
Lägger till år och månad och konverterar till rätt datum- och tidsformat
df["date_added"] = pd.to_datetime(df['date_added']) df['year_added'] = df['date_added'].dt.year df['month_added'] = df['date_added'].dt .month df.head(3)
Låt oss förbereda data
d2 = df[df["typ"] == "Film"] col = "year_added" vc2 = d2[col].value_counts().reset_index().rename(columns = {col : "count", "index" : col}) vc2['procent'] = vc2['count'].apply(lambda x : 100*x/sum(vc2['count'])) vc2 = vc2.sort_values(col)
Nu ska vi göra ett vattenfallsdiagram med Plotly trace go.Waterfall(). Nu ska vi göra ett vattenfallsdiagram för Filmer genom åren.
fig2 = go.Figure(go.Waterfall( name = "Film", orientering = "v", x = ["2008", "2009", "2010", "2011", "2012", "2013", " 2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", textposition = "auto", text = ["1", "2", " 1", "13", "3", "6", "14", "48", "204", "743", "1121", "1366", "1228", "84"], y = [1, 2, -1, 13, -3, 6, 14, 48, 204, 743, 1121, 1366, -1228, -84], kontakt = {"line":{"color":"#b20710" }}, ökande = {"marker":{"color":"#b20710"}}, minskande = {"marker":{"color":"orange"}}, ))
Låt oss gå igenom varje parameter en efter en:
- x: Värdena som kommer att vara på x-axeln
- y: Värdena som kommer att ligga på y-axeln
- text: De värden som kommer att finnas på diagrammen
- textposition: Vi kan sätta texten inuti staplarna i diagrammet eller ovanför staplarna i diagrammet
För att göra diagrammen eleganta kommer vi också att ge färgerna till staplarna på diagrammen och deras kopplingslinje. För ökande staplar har jag gett röd färg och för minskande staplar är det gul färg.
Parametrarna för diagrammen
- kontakt: Ger färger till anslutningslinjen
- ökande: Ge färger till de ökande staplarna
- minskar: Ger färger till de minskande staplarna
Som vi ser diagrammet ser det ganska bra ut men låt oss göra det mer attraktivt.
fig2.update_xaxes(showgrid=False) fig2.update_yaxes(showgrid=False, visible=False) fig2.update_traces(hovertemplate=None) fig2.update_layout(title='Titta på film under året', height=350, margin=dict( t=80, b=20, l=50, r=50), hovermode="x unified", xaxis_title=' ', yaxis_title=" ", plot_bgcolor='#333', paper_bgcolor='#333', title_font= dict(size=25, color='#8a8d93', family="Lato, sans-serif"), font=dict(color='#8a8d93'))
Nu ser det perfekt ut.
Låt oss titta på parametrarna nu.
- Titel: Titel för diagrammet
- marginal: Ställa in marginalen för diagrammet: topp, botten, vänster, höger
- plot_bgcolor: Ställa in bakgrundsfärgen för tomten
- paper_bgcolor: Ställa in pappersbakgrundsfärgen
- font: Ställa in teckensnittsegenskaper
- title_font: Ställa in egenskaper för titelteckensnitt
- Jag har dölja y-axeln eftersom genom att använda update_yaxes(visible=False).
Den fullständiga koden
d2 = df[df["typ"] == "Film"] col = "year_added" vc2 = d2[col].value_counts().reset_index().rename(columns = {col : "count", "index" : col}) vc2['percent'] = vc2['count'].apply(lambda x : 100*x/sum(vc2['count'])) vc2 = vc2.sort_values(col) fig2 = go.Figure (go.Waterfall( name = "Film", orientering = "v", x = ["2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015 ", "2016", "2017", "2018", "2019", "2020", "2021", textposition = "auto", text = ["1", "2", "1", "13 ", "3", "6", "14", "48", "204", "743", "1121", "1366", "1228", "84", y = [1, 2, -1, 13, -3, 6, 14, 48, 204, 743, 1121, 1366, -1228, -84], anslutning = {"line":{"color":"#b20710"}}, ökande = {"marker":{"color":"#b20710"}}, minskande = {"marker":{"color":"orange"}}, )) fig2.update_xaxes(showgrid=False) fig2.update_yaxes(showgrid =False, visible=False) fig2.update_traces(hovertemplate=None) fig2.update_layout(title='Titta på film under året', height=350, margin=dict(t=80, b=20, l=50, r =50), hovermode="x unified", xaxis_title=' ', yaxis_title=" ", plot_bgcolor='#333', paper_bgcolor='#333', title_font=dict(size=25, color='#8a8d93', family="Lato, sans-serif"), font=dict(color='#8a8d93'))
Vattenfallsdiagram med Matplotlib
Importera vattenfallsdiagrambiblioteket med pip
!pip installera vattenfallsdiagram
Importera biblioteket
importera pandor som pd import waterfall_chart importera matplotlib.pyplot som plt %matplotlib inline
Låt oss rita ett vattenfallsdiagram för Varje veckas försäljningsdata.
a = ['mån','tis','wen','tors','fre','lör','sön'] b = [10,-30,-7.5,-25,95,-7,45, XNUMX] waterfall_chart.plot(a, b);
Om vi tittar noga på diagrammen är staplarna med positiva värden i grönt, negativa värden är i rött och det totala värdet är i blått som standard.
Lägger till några parametrar i diagrammet
waterfall_chart.plot(a, b, net_label='Total', rotation_value=360)
parametrar i diagrammet:
- net_label: Vid sista bar kan vi ändra namnet på baren med net_label
- rotationsvärde: Rotera och ställa in värdet på x-axeln
Slutnoteringar
Vi såg vikten av vattenfallsdiagrammet: när och hur man använder det med Plotly och Matploib. Jag hoppas att du gillade artikeln och om du har några frågor kan du kontakta mig på
LinkedIn | Kaggle | Medium | Analys Vidhya
Källa: https://www.analyticsvidhya.com/blog/2021/10/a-complete-explainer-on-waterfall-chart/
- '
- "
- 2016
- 2019
- 2020
- 2021
- 84
- analys
- analytics
- runt
- Artikeln
- tillgång
- bil
- barer
- SLUTRESULTAT
- byta
- Diagram
- kommentarer
- datum
- finansiella
- full
- Ge
- god
- Grön
- Hår
- Dölja
- Hur ser din drömresa ut
- How To
- HTTPS
- index
- IT
- Bibliotek
- linje
- Framställning
- Media
- Medium
- film
- Filmer
- Netflix
- öppet
- öppen källkod
- beställa
- Övriga
- Papper
- presentera
- försäljning
- Serier
- inställning
- starta
- världen
- tid
- topp
- tv
- värde
- vecka
- vecka
- världen
- X
- år