Traducción: Propuesta para la SOTI 2023 Challenge de la Data Visualization Society
Data Visualization Society-aren SOTI 2023 Challenge-erako proposamena
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.
Hau da Data Visualization Society-aren SOTI 2023 Challenge-era aurkeztu dudan proposamena.
- Kodea Github-en (ez du azken konposizioa sortzen)
- Konposizioa A2 tamainan (PDF formatua)
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
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, aesthetics
ak (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.
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_tile
ri betegarri erradialak ezarri nizkion (degradatuaren kanpokaldeko kolorea hondoko kolore bera izanik, laukiak borobila lirudike).
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.
Adar bakoitzak erantzun desberdin bat irudikatuko luke, eta sustraiek galderarentzako erantzunik ematen ez duten inkestak.
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.)
Bestalde, erronken gaineko galdera erantzun gabe utzi zuten inkestak sustrai gisa agertzen dira.
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.
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.
Xehetasun teknikoak
Lan gehiena tidyverse
ko 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.
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.
Marrazkia
Hauek dira legenda-grafikoa sortzeko erabiltako geom
ak:
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 dugugeom
hau marrazteko.
Beste grafiko guztiak facet_wrap()
-i esker sortzen dira. Legenda moduko geom
ak 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.