You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

Vizualizacija proporcija

 Sketchnote by (@sketchthedocs)
Vizualizacija proporcija - Sketchnote by @nitya

U ovoj lekciji koristit ćete drugačiji dataset fokusiran na prirodu kako biste vizualizirali proporcije, poput broja različitih vrsta gljiva u datasetu o gljivama. Istražimo ove fascinantne gljive koristeći dataset preuzet od Audubona koji sadrži detalje o 23 vrste gljiva s listićima iz obitelji Agaricus i Lepiota. Eksperimentirat ćete s ukusnim vizualizacijama poput:

  • Tortnih grafikona 🥧
  • Grafičkih prikaza u obliku prstena 🍩
  • Waffle grafikona 🧇

💡 Vrlo zanimljiv projekt pod nazivom Charticulator od Microsoft Researcha nudi besplatno sučelje za vizualizaciju podataka putem povlačenja i ispuštanja. U jednom od njihovih tutorijala također koriste ovaj dataset o gljivama! Tako možete istražiti podatke i učiti o biblioteci istovremeno: Charticulator tutorial.

Kviz prije predavanja

Upoznajte svoje gljive 🍄

Gljive su vrlo zanimljive. Uvezimo dataset kako bismo ih proučili:

import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()

Ispisuje se tablica s odličnim podacima za analizu:

class cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape stalk-root stalk-surface-above-ring stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
Otrovna Konveksna Glatka Smeđa Modrice Oštar Slobodna Zbijena Uska Crna Šireća Jednaka Glatka Glatka Bijela Bijela Djelomična Bijela Jedan Viseća Crna Raspršena Urbana
Jestiva Konveksna Glatka Žuta Modrice Badem Slobodna Zbijena Široka Crna Šireća Klub Glatka Glatka Bijela Bijela Djelomična Bijela Jedan Viseća Smeđa Brojna Trava
Jestiva Zvono Glatka Bijela Modrice Anis Slobodna Zbijena Široka Smeđa Šireća Klub Glatka Glatka Bijela Bijela Djelomična Bijela Jedan Viseća Smeđa Brojna Livade
Otrovna Konveksna Ljuskava Bijela Modrice Oštar Slobodna Zbijena Uska Smeđa Šireća Jednaka Glatka Glatka Bijela Bijela Djelomična Bijela Jedan Viseća Crna Raspršena Urbana

Odmah primjećujete da su svi podaci tekstualni. Morat ćete ih konvertirati kako biste ih mogli koristiti u grafikonu. Većina podataka, zapravo, predstavljena je kao objekt:

print(mushrooms.select_dtypes(["object"]).columns)

Rezultat je:

Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
       'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
       'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
       'stalk-surface-below-ring', 'stalk-color-above-ring',
       'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
       'ring-type', 'spore-print-color', 'population', 'habitat'],
      dtype='object')

Pretvorite podatke u stupcu 'class' u kategorije:

cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass

Sada, ako ispišete podatke o gljivama, vidjet ćete da su grupirani u kategorije prema klasi jestivosti/otrovnosti:

cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape ... stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
class
Jestiva 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208 ... 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208
Otrovna 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916 ... 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916

Ako slijedite redoslijed prikazan u ovoj tablici za kreiranje oznaka kategorija klase, možete izraditi tortni grafikon:

Torta!

labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()

Voila, tortni grafikon koji prikazuje proporcije podataka prema ove dvije klase gljiva. Vrlo je važno pravilno odrediti redoslijed oznaka, posebno ovdje, pa svakako provjerite redoslijed kojim je niz oznaka kreiran!

tortni grafikon

Prstenovi!

Vizualno zanimljiviji tortni grafikon je grafikon u obliku prstena, koji je tortni grafikon s rupom u sredini. Pogledajmo naše podatke koristeći ovu metodu.

Pogledajte različita staništa u kojima gljive rastu:

habitat=mushrooms.groupby(['habitat']).count()
habitat

Ovdje grupirate podatke prema staništu. Ima ih 7, pa ih koristite kao oznake za grafikon u obliku prstena:

labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']

plt.pie(habitat['class'], labels=labels,
        autopct='%1.1f%%', pctdistance=0.85)
  
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()

fig.gca().add_artist(center_circle)
  
plt.title('Mushroom Habitats')
  
plt.show()

grafikon u obliku prstena

Ovaj kod crta grafikon i središnji krug, a zatim dodaje taj središnji krug u grafikon. Uredite širinu središnjeg kruga promjenom 0.40 u drugu vrijednost.

Grafikoni u obliku prstena mogu se prilagoditi na nekoliko načina kako bi se promijenile oznake. Oznake se posebno mogu istaknuti radi bolje čitljivosti. Saznajte više u dokumentaciji.

Sada kada znate kako grupirati podatke i prikazati ih kao tortu ili prsten, možete istražiti druge vrste grafikona. Isprobajte waffle grafikon, koji je samo drugačiji način istraživanja količine.

Waffle!

Grafikon tipa 'waffle' je drugačiji način vizualizacije količina kao 2D niz kvadrata. Pokušajte vizualizirati različite količine boja klobuka gljiva u ovom datasetu. Za to trebate instalirati pomoćnu biblioteku pod nazivom PyWaffle i koristiti Matplotlib:

pip install pywaffle

Odaberite segment svojih podataka za grupiranje:

capcolor=mushrooms.groupby(['cap-color']).count()
capcolor

Izradite waffle grafikon kreiranjem oznaka i zatim grupiranjem podataka:

import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
  
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
    'amount': capcolor['class']
     }
  
df = pd.DataFrame(data)
  
fig = plt.figure(
    FigureClass = Waffle,
    rows = 100,
    values = df.amount,
    labels = list(df.color),
    figsize = (30,30),
    colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)

Koristeći waffle grafikon, jasno možete vidjeti proporcije boja klobuka u ovom datasetu gljiva. Zanimljivo je da postoji mnogo gljiva sa zelenim klobukom!

waffle grafikon

Pywaffle podržava ikone unutar grafikona koje koriste bilo koju ikonu dostupnu u Font Awesome. Eksperimentirajte kako biste kreirali još zanimljiviji waffle grafikon koristeći ikone umjesto kvadrata.

U ovoj lekciji naučili ste tri načina za vizualizaciju proporcija. Prvo, trebate grupirati svoje podatke u kategorije, a zatim odlučiti koji je najbolji način za prikaz podataka - torta, prsten ili waffle. Svi su ukusni i korisniku pružaju trenutan pregled dataset-a.

🚀 Izazov

Pokušajte ponovno kreirati ove ukusne grafikone u Charticulator.

Kviz nakon predavanja

Pregled i samostalno učenje

Ponekad nije očito kada koristiti tortni, prstenasti ili waffle grafikon. Evo nekoliko članaka za čitanje na ovu temu:

https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart

https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce

https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm

https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402

Istražite kako biste pronašli više informacija o ovoj odluci.

Zadatak

Pokušajte u Excelu


Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.