Traducción: Propuesta para la SOTI 2023 Challenge de la Data Visualization Society

Data Visualization Society-aren SOTI 2023 Challenge-erako proposamena

Lanabesak: ggplot2, ggforce, inkscape


EGUNERAKETA (2024-05-30)

Gaur jakinarazi didate aurkeztu nuen proposamenak bi izendapen jaso dituela: bigarren tokia “Exploratory” kategorian eta “Beaty Award” izendapen berezia; hori dela eta, 2024-03-24an publikatu nuen posta eguneratu egin dut, jarraitu nuen prozedura sakonxeago azaltzeko.

The 2023 State of the Industry Survey Challenge winners have arrived!!

Hau da Data Visualization Society-aren SOTI 2023 Challenge-era aurkeztu dudan proposamena.

Challenges for data visualization practice

Otsailan ggplot2-ren bertsio berria plazaratu zuten (3.5.0). Funtzionalitate berriak zekartzan berarekin eta, horien artean, coord_radial()ekin saltseatzeko gogoa nuen batik bat. Funtzionalitate berriak probatzea baino haratagoko ideia garbirik gabe hasi nintzen lanean.

Palmondo baten itxura izango zuen zerbait sortzeko asmoarekin ekin nion coord_radial()ekin lan egitera, baina emaitzak ez ziren espero nituenak izan. Palmondoa sortzeko marra kurbak marraztu nahi nituen zirkulu erdia erdiko espazioan, baina oraingoz coord_radial() eta geom_curve()k ez dute batera lan egiten, eta horregatik ggforce erabiltzera pasa nintzen.

Warning: geom_curve() is not implemented for non-linear coordinates

coord_radial() eta geom_curve() ez daude adiskidetuta.

Kurbak sortzerakoan, geom_curve()k ez digu kontrol handia eskaintzen, eta horregatik ggforce::geom_bezier() saiatu nintzen hurrena. Honek bezier kurba kubiko (kontrol puntu bakarrarekin) nahiz kuadratikoak (bi kontrol punturekin) sortzeko aukera eskaintzen digu. Hala ere, hainbat proba eta gero ggforce::geom_bspline2 erabili dut grafikoak sortzeko.

geom_bspline2() nolanahiko kurbak sortzeko ahalmena eskaintzeaz gain, aestheticsak (ezaugarri grafikoak) interpolatzeko aukera ere eskaintzen du, marraren kolorea modu degradatuan aldatzeko, esate baterako.

Hasieran hainbat urtetako datuak alderatzeko asmoa nuen: palmondoaren alde bakoitzeko adarrek urte jakin bateko erantzunen berri emango zuketen.

bsplineez osatutako palmondoa.

Galdera bakoitzak jasotako erantzun kopuruaren berri adarren muturretan kokatzekoak ziren puntuek emango zuten. Puntu horietan ggplot-en funtzionalitate berrietako bat probatu nahi nuen, poligonoetean kolore eskala degradatuak erabili ahal izatea betegarri moduan. Baina, esan bezala, poligonoekin lan egiteko, diseinatuta dago, ez puntuekin lan egiteko, eta horregatik geom_tileri betegarri erradialak ezarri nizkion (degradatuaren kanpokaldeko kolorea hondoko kolore bera izanik, laukiak borobila lirudike).

geom_tilerekin egindako probak

Jardunbide honek badu arazo handia, baina: puntuak elkarrengandik hurbilegi badaude, karratuen forma antzematen da.

Saiakera pare baten ondoren oinarrizko idea aldatu eta soilik azken urteko inkestako datuekin lan egitea erabaki nuen. Ordurako garbi nuen nolabaiteko landare formaren batekin lan egin nahi nuela.

Metafora bisual hori abiapuntutzat hartuta oinarrizko bertsio bat osatu nuen, lau adar eta bi sustrai izango zituena.

Azken ideiaren lehen zirriborroa.

Adar bakoitzak erantzun desberdin bat irudikatuko luke, eta sustraiek galderarentzako erantzunik ematen ez duten inkestak.

Hastapeneko adarkadura
Zirriborro honetan adar bakoitzaren zabalera jasotako erantzun kopuruaren araberakoa izateko aukera jaso nuen.

Halabaina, adarkadura honetan No impact erantzuna nolabaiteko inpaktua onartzen duten beste aukerekin batera agertuko litzateke, eta dena delako challengeak orohar duen inpaktua hobeto ikustaraziko zuen diseinua nahiago nuen.

Azken bertsioak bi adar nagusi ditu: batean, erronkak gutxieneko inpaktua duela aitortzen duten erantzunak biltzen dira, eta bestean inpakturik ez duela uste dutenak (berariaz adierazten delako, edo erronka jakinari buruzko galdera erantzun gabe uzten dutelako.)

Zirriborro honetan ggforce::geom_bspline2()ek erabiliko dituen puntuak agertzen dira.

Bestalde, erronken gaineko galdera erantzun gabe utzi zuten inkestak sustrai gisa agertzen dira.

Behin betiko adarkadura

Azken bertsioak, erronka eta erantzun posible bakoitzeko bildutako erantzunak erakusten ditu. Erantzun bakoitza puntu batez irudikatzen da, eta espiral baten arabera antolatzen dira. Zenbat eta erantzun gehiago, orduan eta espiral luzeagoa.

Espiralak

Behin betiko konposizioan (Inskape erabili dut hau diseinatzeko) erronka nagusia nabarmendu dut, eta legenda moduan ere erabili ahal izateko ggplot-en hainbat osagarri erabili ditut: ggforce (geom_mark_hull marradurazko azalerak sortzeko), geomtextpath (geom_textpath testua kurbatan idazteko), ggtext (geom_richtext testuetako ezaugarri grafiko gehiago zehaztu ahal izateko). Azkenik, pilatutako barraz osatutako grafiko pare bat erantsi dut, datuen azterketari ikuspegi tradizionalagoa gehitzeko.

Grafikoari kontestua gaineratzen dioten osagaiak gehituta, nabarmendutako grafikoa ikusleari grafikoa deskodetzen lagunduko dion legenda bilakatzen da.

Xehetasun teknikoak

Lan gehiena tidyverseko osagarriekin (datuak prestatzeko) eta ggplot eta bere osagarri batzuekin egina dago. Kodea nire Github-eko kontuan eskuratu dezakezu.

Datu-prestaketa

Jatorrizko datutegiak lerro bakoitzeko inkesta baten erantzun guztiak jasotzen ditu (900 inkesta eta 63 aldagai). Datu hauetatik abiatuta hainbat datutegi sortu ditut grafikoetako osagaiak marraztu ahal izateko:

  • Adarrak: erantzun posible bakoitzeko bat.
  • Loreak: eratzun bakoitzeko puntu bar, espiralean antolatuta.

Adarrak

Adarrak ggforce::geom_bspline2() erabilita sortu ditut. Asko sinplifikatuta, b-splinek hainbat kontrol-punturen araberako kurbak marrazten dituzte. Adarrak marraztu ahal izateko berariaz kalkulatutako hainbat punturen koordenadak biltzen dituen datutegia sortu behar izan dut. Puntu hauetatik abiatuta ggforce::geom_bspline2()k kurbak sortu eta ezaugarri grafikoak (kolorea, marren zabalera) interpolatzeko beharrezko kalkuluez arduratzen da.

geom_bspline()k kurbak hainbat puntutik abiatuta sortzen ditu. Turkesa koloreko puntuak igarotze-puntuak dira eta gorrixkek marrak erakartzeko puntuak dira.

Espiralak

Espiralak sortu ahal izateko lehenik abiapuntua zein izango duten ezarri behar da; adar bakoitzaren azken puntuko koordenadak erabiliko ditugu horretarako. Koordenada hauek oinarri hartuta datu-dentsifikaziorako funtzio bat erabiliko dugu, erantzun bakoitzarentzako espiral batean kokatzeko koordenatuak kalkulatuko dituena. Espiralaren abiapuntuan erantzun-puntu gehiegi pilatu ez dadin, N “erantzun” gehituko ditugu funtzioan, eta ondoren sortu berri dugun datutegiko lehen N puntuak ezabatuko ditugu.

Dentsifikazio-funtzioa erabilita sortutako puntu-espiralak

Marrazkia

Hauek dira legenda-grafikoa sortzeko erabiltako geomak:

  • ggforce::geom_mark_hull(): hainbat puntu emanda hauek bilduko dituen azalera sortzen du. Birritan erabili dut, lehengoa erronkak nolabaiteko inpaktua baduela onartzen duten erantzunak biltzeko, eta inpakturik ez duela deritzotenak biltzen dituena bestetik (datuak hull bakoitzaren konfigurazioaren baitan filtratzen dira).
  • geomtextpath::geom_textpath(): testu bat marra baten formara egokitzen du. Espiraletako datuekin marrazten dira testuok, eskuinera lerrotuta (hau da, testu bakoitza dagokion espiralaren azken puntutik atzeraka marrazten da).
  • ggtext::geom_richtext(): testu batean Markdown kodea erabiltzeko aukera gehitzen du. Letra lodiak erabiltzeko.
  • ggforce::geom_bspline2(): azalduta dago honezkero.
  • geom_point(): berariazko datutegia baliatzen dugu geom hau marrazteko.
Legenda-grafikoan erabilitako geomak

Beste grafiko guztiak facet_wrap()-i esker sortzen dira. Legenda moduko geomak erronka bakarrean marrazteko trikimalua geom bakoitzean datuak beharren arabera iragaztean datza.

Koloreak eta tipografía

Koloreak eta tipografia Data Visualization Societyaren markaren iruditik jaso ditut.

Ondorioak

ggplot-eko funtzionalitate berriekin jolasteko aitzakia gisa hasi zenak grafiko tradizionalak alde batera utzi eta forma organikoagoekin lan egiteko aukera izaten bukatu du. Are gehiago; 1 eta 12 erronkak tarteko (denbora falta eta abilezia tekniko falta) buruan ibili nituen forma are organikoagoak sortzeko beste hainbat ideia kanpoan utzi behar izan nituen: adarrak erantzun kopuruaren arabera gehiago edo gutxiago kurbatzea…

Garbi dago grafiko honen helburu nagusia estetikoa dela, eta ez analitikoa. Hortaz, bereziki poztu nau proposamenak Beauty Award delakoa jaso izanak.


Post gehiago