Näytetään tekstit, joissa on tunniste LibreOffice. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste LibreOffice. Näytä kaikki tekstit

torstai 13. joulukuuta 2012

Sormiharjoitus Twitter-datalla, osa 2

Käsittelin pari viikkoa sitten yksinkertaista Twitter-datan analyysiä, joka muodostui siinä määrin yleisömenestykseksi, että ainakin neljä ihmistä innostui sen perusteella tekemään vastaavanlaisen visualisoinnin ja tästä hurmioituneena ajattelin jatkaa saman aiheen tiimoilta.

Tällä kertaa minulla on tavoitteena kertoa miten on mahdollista kerätä ja visualisoida käyttäjän kuukausittaiset twiittimäärät. Innostuin ideasta viime aikoina Twitter:ssä liikkuneen ilmiön kautta, jossa kerrotaan omista Twitter:iin liittymispäivistä (kts. Twitter Birthday -palvelu). Etenkin, että monet kertoivat liittyneensä jo useita vuosia sitten, mutta aktivoituneen palvelun käyttämiseen vasta viime aikoina, herätti minussa kiinnostuksen siitä milloin itse aloin todella Twitter:ä käyttämään.

Ajatus, joka minulle heräsi oli kerätä talteen kaikki twiittini ja ryhmitellä ne kuukausittaisiksi twiittimääriksi. Eli esimerkiksi niin, että joulukuussa 2011 twiittasin 98 kertaa ja tammikuussa 2012 84 kertaa. Halusin nähdä datan piirrettynä yksinkertaisesti visualisoituna pylväsdiagrammiksi, jossa pystyakseli kuvaa twiittien määrää ja vaaka-akseli aikaa. Näin pystyisin näkemään missä vaiheessa olen esimerkiksi saavuttanut twiittimäärissäni nykyisen tason ja millä tavoin tuo twiittien kuukausitten määrä on vaihdellut eri aikoina.

Mutta nyt itse asiaan!



Kuten aikaisemmasta harjoituksesta opimme on All My Tweets -palvelun kautta mahdollista ladata käyttäjän kaikki twiitit aina
30003200:een viimeisimpään twiittiin saakka (Note: Twitter limits the number of tweets returned to 3,200). Itselläni tämä raja ei tule täyteen, joten edelleen palvelu palvelee käyttötarkoitustani.

Aloitan kuten aikaisemmassakin esimerkissäni eli kopioin henkilökohtaisen All My Tweets -sivuni sisällön Sublime Text -editoriin leikepöydän kautta. Analyysia tehdessäni minulla oli Twitter:n mukaan 1930 twiittiä ja tarkistin, että tämä lukuarvo täsmäsi Sublime Text -editoriin kopioituneiden rivien määrää. (Kuva 1)

Otin twiitit talteen All My Tweets-palvelusta yksinkertaisesti maalaamalla kaikki twiitit ja kopioimalla ne leikepöydän kautta käyttämääni Sublime Text -tekstieditoriin. (Kuva 1)
Edellisellä kerralla halusin poistaa kaikki aikaleimatiedot datasta, koska en halunnut niitä mukaan avainsanapilveen. Tällä kertaa motivaationi on sen sijaan muokata päivämäärätietoa niin, että siitä poistetaan reduntantti tieto twiitin lähetyspäivästä, koska haluan niputtaa twiittejä yhteen nimen omaan kuukauden ja vuoden perusteella. All My Tweets -palvelusta kopioitujen twiittien perässä oleva aikaleima on muotoa "Dec 10, 2012", joten tavoitteeni on muuttaa tekstijono muotoon "Dec, 2012". Tällä tavoin kaikki joulukuussa 2012 lähetetyt twiitit saavat yhteisen nimittäjän, jonka avulla ne on myöhemmässä vaiheeessa mahdollista visualisoida.

Teen muunnoksen jälleen säännöllisten lausekkeiden avulla. Käyttämäni etsi ja korvaa koodi näyttää seuraavalta:

([A-Z]{1}[a-z]{2}) ([0-9]+), ([0-9]{4})

ja

\1, \3

Korvaan siis merkkijonon jossa on kolme merkkiä joista ensimmäinen on kapitaali, välilyönti, numeroita yksi tai useampi, pilkku, välilyönti, sekä neljä numeroa siten, että poistan päivämäärää kuvaavan osuuden. (Kuva 2)

Etsi ja korvaa toiminto löytyy CMD/CTRL + SHIFT + F näppäinyhmistelmän takaa. Voit myös tarkistaa, että vasemmasta alanurkasta löytyvä hakutuloksien määrä vastaa twiittiesi määrää. (Kuva 2)
Tähän asti toteutus on edennyt hyvin samalla kaavalla kuin edellisessäkin harjoituksessa. Data hankittiin All My Tweets -palvelusta ja sitä muokattiin hieman sopivampaan muotoon Sublime Text -editorissa. Tässä kohtaa esimerkit lähtevät kuitenkin eri poluille, koska aikaisemmassa harjoituksessa veimme tekstimuotoisen datan suoraan Sublime Text -editorista Wordle:en. Nyt datan muokkaamista tulee kuitenkin jatkaa antamalla sille lisää rakenteisuutta, koska on tarpeellista pystyä osoittamaan missä kohtaa twiitin tekstisisältö loppuu ja tieto twiitin lähetysajankohdasta alkaa.

Tein twiitin tekstisisällön ja aikaleiman erottamisen askelsarkainmerkillä (tabulator). Tämä siitä syystä, että esimerkiksi pilkun tai puolipisteen käyttäminen ei ole oikein mielekästä, koska ne ovat normaalisti twiiteissä/tekstissä käytettäviä merkkejä ja erotinmerkin tulee olla sillä tavalla yksikäsitteinen, ettei sitä voida sekoittaa sisältöön. Eli oletan, ettei twiittien sisällöissä ole askelsarkaimia. (Kuva 3)

Poistan päivämäärien edessä olevan välilyönnin ja korvaan sen askelsarkain merkillä, jota käytän erottamaan tekstisisältö- ja aikasolut toisistaan. (Kuva 3)
Nyt data on valmis tallennettavaksi (CMD/CTRL + S). Tallennettaessa kannattaa käyttää .csv-tiedostopäätettä. CSV-tiedosto on rakenteista dataa sisältävä tiedostoformaatti, jossa data on useimmiten eroteltu toisistaan pilkuilla, mutta pilkkujen sijaan on mahdollista käyttää oikeastaan mitä tahansa erotinmerkkiä (kts. DSV). CSV-tiedoston avaaminen onnistuu kätevimmin LibreOffice-taulukkolaskentaohjelmassa, joka mahdollistaa tiedostossa käytettävän erotinmerkin manuaalisen valitsemisen. (Kuva 4)

Erotinmerkiksi on valittu "Tab". Muut asetukset toimivat usein sellaisenaan, mutta ongelmia voi syntyä esimerkiksi merkistökoodauksen kanssa, jolloin "Character set" asetusta voi yrittää muuttaa valintojen ISO-8859-1:n ja UTF-8:n välillä. (Kuva 4)
Tiedoston avaamisen jälkeen huomasin, että muumien twiittien aikaleimat eivät olleet tulleet oikein erotelluiksi, mutta korjasin ne tässä vaiheessa käsin, koska kyse oli vain muutamasta kymmenestä virheellisestä esiintymästä. (Kuva 5)

Dataa kannattaa selata silmämääräisesti läpi, jotta huomaa tämänkaltaiset ilmiselvät virheet. (Kuva 5)
Korjattuani virheet tallensin tiedoston uudelleen LibreOfficessa ja tehdessäni näin valitsin, että haluan muokata asetuksia (Kuva 6). Tämä mahdollistaa sen, että voin valita mitä erotinmerkkiä jatkossa käytetään (Kuva 7). Tämä on tärkeää, koska seuraavaksi käyttämämme Excel ei osaa käsitellä oletuksena kuin puolipistein eroteltua dataa.

"Edit filter settings" -asetus antaa seuraavassa vaiheessa mahdollisuuden muokata .csv-tiedoston asetuksia. (Kuva 6)
Tärkeää on valita "Field delimeter" -kohtaan puolipiste (;) ja Text delimeter -kohtaan lainausmerkki ("). (Kuva 7)
Nyt minulla on siis hyvin jäsennelty .csv-muotoinen tiedosto, joka sisältää taulukkodataa missä on rivejä twiittieni määrä ja kaksi saraketta. Ensimmäinen sarake pitää sisällään lähettämäni twiitin sisällön ja toinen tiedon siitä minä kuukautena ja vuotena twiitti on lähetetty.

Seuraavaksi avaan tiedoston Excel:ssä. Mikäli huomaat ongelmia ääkkösten kanssa voit yrittää vaihtaa kuvassa 7 näkyvän Character set valinnan ISO-8859-1:ksi (twiittien tekstisisällöllä ei tämän harjoituksen kannalta ole kuitenkaan merkitystä). Kuitenkin jos kaikki meni hyvin näet aika- ja twiittitiedot eroteltuina omiin soluihinsa myös Excel:ssä. Mitä meidän täytyy tässä vaiheessa tehdä on lisätä datan alkuun yksi rivi, johon lisäämme solujen kuvauksen. (Kuva 8)

Sarakkeille on annettava nimet, jotta voimme käsitellä niitä jatkossa. Nimi sijoitetaan lisäämällä alkuun uusi rivi ja sijoittamalla rivien ensimmäisiin sarakkeisiin jokin saraketta kuvaava tunniste. (Kuva 8)
Nyt dataa on mahdollista analysoida Excel:ssä. Tämä onnistuu helposti Pivot-taulukoiden avulla. Pivot-taulukon luominen onnistuu kätevimmin osoittamalla kenttää A1 ja valitsemalla valikosta Tiedot -> Pivot. Pivot-taulukot mahdollistavat taulukkomuotoisen datan jäsentämisen ja yhteenkokoamisen. Eli esimerkiksi tässä tapauksessa Pivot-taulukko mahdollistaa, että voimme niputtaa twiitit aika-sarakkeen perusteella yhteen. Myös LibreOffice:sta löytyy Pivot-toiminnallisuus, mutta olen kokenut, että Excel:n vastaava on hieman näppärämpi käyttää. (Kuva 9)

Luotuani Pivot-taulukon huomasin, ettei taulukkoa ollut mahdollista järjestää ajallisesti laskevaan tai nousevaan järjestykseen, koska kuukausien lyhennetyt nimet eivät järjestäyty tietokoneen avulla millään yksinkertaisella logiikalla kronologiseen järjestykseen. Aikamääreet olisi voinut muuntaa tässä kohtaa johonkin toiseen muotoon, mutta päädyin tekemään järjestämisen käsin, koska kyse oli kuitenkin vain muutamasta kymmenestä data-alkiosta. Käsin järjestetty data on nähtävillä kuvassa 9 oikealla puolella ja alkuperäinen Pivot-taulukko vasemmalla.

Vasemmalla vihreän otsakkeen alla näkyy Pivot-taulukko. Oikealla sama data, mutta jäsennettynä ajallisesti nousevaan järjestykseen. (Kuva 9)
Nyt data on helppo visualisoida Excel:stä löytyvillä kaavio-komponenteilla. Tämä onnistuu maalaamalla haluttu data – tässä tapauksessa kuvassa 9 näkyvä oikeanpuolimmainen data – ja lisäämällä soveltuvan valikon kautta taulukkoon kaaviokomponentti. Kaaviokomponentiksi valitsin pylväsdiagrammin, koska se on melko luonnollinen tapa kuvata tämänkaltaista dataa määrällistä dataa, jolla on kaksi ulottuvuutta (määrä ja aika). (Kuva 10)

Twitter-käyttöni trendi on ollut selkeästi kasvava. (Kuva 10)
Näinkin monivaiheisen toteutuksen tekeminen oli kuitenkin melko yksinkertaista ja ei ehkä vienyt minulta kuin 15-minuuttia. Tämä kertoo toki, että olen melko sopeutunut käyttämään eri sovellusten parhaita puolia datan käsittelyssä ja tiedän valmiita polkuja, joiden avulla pääsen haluamaani lopputulokseen. Uskon kuitenkin, että jos vain suuntaviivat ovat selvillä niin samankaltaiseen lopputulokseen pääseminen ei ole kovin suuri tekninen haaste.

Jatkokehitysideoitakin keksin matkan varrella kuten, että pylväät voisivat pitää sisällään tiedon siitä kuinka moni twiiteistä kulloisenakin kuukautena on ollut uudelleentwiittaus (retweet).

Kuulen taas mielelläni jos joku on onnistunut toteuttamaan omasta Twitter-datastaan samanlaisen analyysin. Tai mielelläni pullautan tarvittaessa tällaisen sellaisesta kiinnostuneelle.

Muokkaus: 14.1.2013

Tässä Anna Emilia Alentolan versio:
https://twitter.com/anniemilia__/status/282175539157028865

tiistai 6. marraskuuta 2012

#Kuntavaalit-analyysi

Ajattelin ottaa lyhyesti osaa kuntavaalidatan perkaamiseen ja käsittelyyn. Tähän minut motivoi mm. A-Stream:stä tuttu toimittajana Jaakko Karhu, joka jakoi keräämänsä – Twitter-kavanalle #Kuntavaalit – kerääntyneen keskustelun. Asiaa edisti, että data oli .tsv-muodossa, joten ajattelin, että datan avaaminen ja jatkokäsittely esimerkiksi Excel:ssä olisi siten helppoa ja nopeaa.

Avasin aluksi datan kuitenkin LibreOffice:ssa, jotta sain tallennettua datan uudelleen .csv-muodossa, koska Excel ei oletusarvoisesti – ainakaan minulla – osaa avata .tsv-muotoista tiedostoa oikein. Tämän lisäksi korjasin n. 600 virheellisesti rivitettyä twiittiä säännöllisten lausekkeiden avulla Sublime Text -editorissa. Virheellisesti rivitetyt twiitit oli helppo paikantaa sen perusteella, että rivin ensimmäisenä arvona tuli olla aina yksittäisen twiitin numeerinen id-arvo eikä esimerkiksi kirjaimia.

Näiden toimenpiteiden jälkeen data oli valmis käsiteltäväksi Excel:ssä. Data piti sisällään viisi saraketta, jotka olivat:
  1. Yksittäisen twiitin numeeronen tunniste (ID)
  2. Käyttäjän, joka twiitin oli lähettänyt, käyttäjätunnus (esim. teelmo)
  3. Twiitin lähetyspäivä (esim. 31.10.2012)
  4. Twiitin lähetysaika (esim. 15:44)
  5. Twiitin sisältö
Data oli siis jo lähtökohtaisesti hyvin rakenteistettu eikä sitä tarvinnut siten jatkokäsitellä esimerkiksi pilkkomalla useampiin sarakkeisiin. (Kuva 3)

Analyysin tekemiseen käytin Excel:stä löytyvää Pivot-toiminnallisuutta, jolla sain helposti laskettua, että twiittejä datassa oli mukana yhteensä n. 19 000 kpl:tta. Pivot-taulukkojen avulla on helppoa tutkia datan jakautumista eri sarakkeiden arvoihin perustuen. Ensimmäiseksi tutkin miten twiittien määrä jakautui käyttäjien kesken ja piirsin datasta pylväsdiagrammin. Lopputulos on hyvin perinteinen esimerkki long tail -datasta. Eli pieni osa käyttäjistä oli erittäin aktiivisia kun taas suurin osa osallistui keskusteltuun vain harvoin (Samankaltainen käyttäyminen oli nähtävissä myös Lontoon mellakoista tehdyissä Twitter-analyyseissä). (Kuva 1)

Suurin osa käyttäjistä osallistui keskusteluun vain muutaman kerran. (Kuva 1)
Pivot-taulukosta oli luettavissa, että yksittäisiä twiittaajia datassa oli n. 2 900, joista n. 1 300 twiittasi kanavalle vain kertaalleen. Määrällisesti Top10-twiittaajien lista näytti seuraavalta:
  1. DimitriQvintus (762 twiittiä)
  2. EliasAarnio (319)
  3. EkholmTalas (306)
  4. juffek (274)
  5. jussisalonranta (253)
  6. juhanilohikoski (229)
  7. TimoSoinii (216)
  8. aleksieskelinen (186)
  9. FinlandInc (181)
  10. katleena (175)
Toiseksi halusin katsoa miten twiitit jakautuivat päivittäin. Edelleen Pivot-taulukoissa tämänkaltaisen tiedon esiin tuominen on helppoa. Suosituimmaksi päiväksi osoittautui 25.10., jolloin twiitattiin yhteensä 4 138 kertaa. Päivän suosio selittyy tuona torstaina Yle:n lähettämällä "Kuntavaalit 2012: Loppukiri" -kuntavaalitentillä. Päivien Top6-lista näyttää seuraavalta:
  1. 25.10. (4138 twiittiä)
  2. 24.10. (2183)
  3. 20.9. (1358)
  4. 19.10. (1295)
  5. 27.9. (1271)
  6. 29.10. (1218)
Mielenkiintoista on, ettei itse vaalipäivä (28.10.) nouse listalla kovin korkealle. Keskimäärin seurantajaksolla 20.9.2012 – 31.10.2012 (42 päivää) twiittejä #Kuntavaalit-kanavalle lähetettiin n. 460 kpl:tta (19470 twiittä / 42 päivää). Piirsin myös twiittien päivittäisestä jakautumisesta samankaltaisen pylväsdiagrammin kuin edellä. (Kuva 2)

Suurin päivittäinen keskustelupiikki osui Yle:n vaalitenttipäivälle 25.10. (Kuva 2)
Kolmanneksi tein vielä samankaltaisen analyysin twiittien jakautumisesta tunneittain. Tämän toteuttamiseksi minun piti irrottaa "tunti"-tieto twiitin lähettämisajasta. Onnistuin tekemään tämän Excel:ssä ajamalla jokaiselle twiitille, uudessa lisäämässäni sarakkeessa, seuraavanlaisen komennon.

=JOS(PITUUS(D30)=5;VASEN(D30;2);VASEN(D30;1))

Kyseinen koodi laskee sarakkeessa D rivillä 30 olevan tekstin pituuden merkkeinä ja palauttaa riippuen siitä onko pituus viisi vai ei joko kentän kaksi ensimmäistä tai vain ensimmäisen merkin. Sarakkeessa D on jokaisen twiitin lähetysaika muodossa hh:mm. Kyseinen ehto kahden ensimmäisen tai vain ensimmäisen merkin mukaan ottamisesta oli tehtävä, koska datassa "tunti"-tietoon ei oltu merkitty etunollia, joten ennen klo 10:ntä lähettyistä twiiteistä halusin ottaa mukaan vain ensimmäisen numeron kun taas klo 10:ltä ja sen jälkeen halusin mukaan kaksi ensimmäistä numeroa. (Kuva 3)

Excel:ssä onnistuu melko suurienkin datajoukkojen käsittely vaivattomasti. Hour sarake on luotu time sarakkeen perusteella syöttökentässä näkyvän koodin avulla. (Kuva 3)
Myös twiittien tunnittainen jakauma osoitti, että aktiivisimmat twiittausajankohdat osuivat yhtäaikaisesti TV:n iltaisin tulleiden vaalilähetysten kanssa. (Kuva 4)

Suurin osa keskusteluista ajoittui ilta-aikaan, jolloin myös TV:n vaaliväittelyt pidettiin. (Kuva 4)
Mielenkiintoista tunnittaisessa jakautumisessa on myös aamun korostuminen iltapäivään verrattuna sekä, ettei  keskustelua öisin juuri ollut, joka ei Internet-maailmassa ole niin itsestäänselvä tulos.

Analyysin perusteella minulle heräsi kysymys; ruokkiiko media toiminnallaan Twitter:n käyttöä vai onko Twitter Suomessa itsenäisesti elävä organimisti, jonka media on luonnollisesti ottanut mukaan toimintaansa. Analyysi osoittaa, että keskustelu oli aktiivista kun Twitter sai näkyvyyttä mediassa, mutta muuten keskustelua oli vähemmän. Toinen hyvä kysymys on; onko Twitter:n laaja läsnäolo esimerkiksi TV-lähetyksissä oikeutettua 2 900:n kansalaisen vuoksi. En tarkoita näitä kysymyksiä sinällään kritiikkinä Twitter:n läsnäoloa ja käyttöä kohtaan, mutta mielestäni tulokset ovat mielenkiintoisia.

Huomioitavaa analyysissä on, että tehnyt havainnot ovat vain yhtä hyviä kuin mitä alkuperäinen raakadata on (toki tekijälläkin on osansa). Esimerkiksi Olli Parviainen raportoi Twitter:ssä, että #Kuntavaalit-kanavalle olisi kirjoitettu reilusti yli 30 000 twiittiä. Uskoisin kuitenkin, koska tehdyt havainnot ovat siinä määrin järjellisiä ja tukevat ennakkohypoteeseja, ettei suurta muutosta tapahtuisi vaikka sama analyysi tehtäisiin tälle laajemmalle twiittimäärälle.

Muokkaus 6.11. klo 19:00

Ero Olli Parviaisen ja Jaakon Karhun keräämien twiittimäärien välillä selittyi sillä, että Olli Parviainen oli kerännyt sanan "kuntavaalit" sisältäneet twiitit kun Jaakko Karhu oli kerännyt nimenomaan #Kuntavaalit-kanavalle lähetetyt twiitit.

Twiittien kerääminen aloitettiin vasta 20.9. eli ensimmäisen kuntavaalitentin jälkeisenä päivänä, joten aineisto ei ole tältä osin täysin kattava eikä koko #Kuntavaalit-ilmiötä kuvaava.

Yksittäisten twiittaajien ja twiittien määrää analysoitaessa on huomioitava Nielsenin 90-9-1 -sääntö.



Siivoamani data Excel-muodossa on ladattavissa Dropbox-palvelusta. (13MB, .xlsx, suomenkielinen Excel).

Linkit alkuperäisiin raportointeihin Twitterissä:

maanantai 5. marraskuuta 2012

Näin tehtiin: "Tässä ovat Suomen parhaat terveyskeskukset"

Viime viikolla Yle:llä pitämästäni datajournalismi koulutuksesta innostuneena Sara Rigatelli Yle Uutisista otti minuun yhteyttä. Hän oli tekemässä juttua suomalaisen terveydenhuollon toimivuudesta ja ajatteli, että olisi mahdollisesti kiinnostavaa kuvata ilmiötä datajournalismin keinoin.

Ajatuksena Saralla oli, josko karttavisualisoinnin avulla voisi kuvata eri sairaanhoitopiirien välisiä eroja keskimääräisen jonotusajan ja toisaalta yleisesti lääkärille pääsemisen osalta. Alunperin ajattelimme, että olisi etenkin toimituksellisesti hyödyllistä nähdä data kartalla, koska tämä helpottaisi mm. alueellisten trendien hahmottamista. Keskustelimme toki, että karttaa olisi mahdollista käyttää myös uutisen yhteydessä mikäli lopputulos olisi selkeä ja lukijalle hyödyllinen.

Tarvitsemamme datan keräsimme THL:n ylläpitämästä Sampo-palvelusta. Palvelusta on mahdollista selata erilaisia terveydenhuoltoon liittyviä tilastoja eri muuttujiin perustuen. Otin tarvittavan datan Sampo-palvelusta talteen Excel-taulukkoon jatkokäsiteltäväksi yksinkertaisesti maalaamalla ja copy-pasteamalla. Itseasiassa käytin LibreOffice:n Spreadsheet -työkalua, jonka olen kokenut olevan hieman kätevämpi tämänkaltaisessa datankäsittelyssä (Kuva 1). Esimerkiksi .csv-tiedostojen avaaminen ja käsittely on ollut mielekkäämpää LibreOffice:ssa kuin Excel:ssä.

Taulukko on hyvä formaatti datan käsittelyyn, koska sen käyttäminen onnistuu niin toimittajalta kuin koneeltakin. (Kuva 1)
Seuraavaksi latasin tallentamani .csv-tiedoston Google Fusion Tables -työkaluun. Ajatuksenani oli, että saisin nopeasti tehtyä demon siitä minkälaiseksi kartta muodostuisi eri muuttujilla. Ongelma oli kuitenkin, ettei minulla ollut käytössäni sairaanhoitopiirien rajoja sisältävää karttapohjaa. Pystyin kuitenkin tekemään demon hyödyntämällä käytössäni ollutta kuntakarttapohjaa yhdistämällä siihen tiedot siitä mihin sairaanhoitopiiriin kukin kunta kuuluu. Sairaanhoitopiirien jäsenkunnat löysin ladattavassa muodossa Kunnat.net -palvelusta.

Yhdistettyäni ensinnäkin käytössäni olleen kuntakarttapohjan sairaanhoitopiiritiedon ja toiseksi keräämämme terveydenhuoltodatan kanssa sainkin demon toteutettua (Kuva 2). Ongelma tässä toteutuksessa – lopulliseen versioon verrattuna – oli kuitenkin, että kartta pohjautui kuntarajoihin eikä sairaanhoitopiirien rajoihin. Tämä aiheutti ongelman, ettei kahta sairaanhoitopiiriä voinut erottaa visuaalisesti toisistaan mikäli ne asettuivat samaan arvoalueeseen ja saivat siten saman värityksen. Esimerkiksi kuvassa 2 nähtävästä esimerkkitoteutuksesta on mahdotonta erottaa Pohjois-Pohjanmaan ja Lapin sairaanhoitopiirien rajaa.

Sairaanhoitopiirit eivät erotu kartassa jos kahden vierekkäisen sairaanhoitopiirin väri on sama. (Kuva 2)
Koimme kuitenkin esimerkkitoteutuksesta, että kartasta muodostui mielenkiintoinen ja tietoja oli hauskaa selata sen kautta. Lähdinkin seuraavaksi toteuttamaan karttaa aikaisemminkin käyttämälläni Raphaël-karttapohjalla. Raphaël on JavaScript-kirjasto, joka mahdollistaa mm. räätälöityjen karttavisualisointien toteuttamisen. Alkuperäinen ongelma kuitenkin säilyi sillä edelleenkään minulla ei ollut käytössäni kuin Suomen kuntakarttapohja ja edellenkään vierekkäisiä sairaanhoitopiirejä ei ollut mahdollista erottaa toisistaan jos ne sattuivat ominaisuuksiensa kautta saamaan saman värityksen. (Kuva 3)

Myös räätälöidyssä JavaScript-toteutuksessa ilmenee sama ongelma käytettäessä kuntapohjaista karttaa. Vierekkäisten sairaanhoitopiirien rajaa ei ole mahdollista erottaa jos sairaanhoitopiirit kuvataan samalla värillä. (Kuva 3)
En myöskään keksinyt mitään (helppoa) tapaa, jolla olisin onnistunut kummassakaan toteutustavassa (Google Fusion Tables tai Raphaël) korostamaan sairaanhoitopiirien rajoja, jotta ne olisivat erottuneet kuntarajoista, joten päädyin etsimään uutta karttapohjaa, joka perustuisi nimenomaan sairaanhoitopiireihin.

Onnekseni löysinkin – edelleen Kunnat.net -palvelusta – kartan, jossa sairaanhoitopiirien rajat oli kuvattu. Haaste oli, että karttadata oli julkaistu .pdf-muodossa ja minulla ei ollut aikaisempaa kokemusta siitä miten .pdf-muotoista dataa olisi mahdollista visualisoida ja hyödyntää etenkään JavaScript-pohjaisessa toteuksessa. Päätin kuitenkin lähteä kokeilemaan miten tämä onnistuisi. Tiesin, että tavoitteena minulla olisi saada karttadata .svg-muotoon, koska tämä oli käyttämäni Raphaël-kirjaston tukema tiedostomuoto.

Päädyin Googlettamaan asiaa hakusanoilla ".pdf to .svg" ja yllätyin, että kyse olikin suhteellisen triviaalista operaatiosta. Tiesin kyllä etukäteen, että .pdf on vektorigrafiikkaan perustuva formaatti, mutta jostain syystä ajattelin, ettei yksittäisten elementtien poimiminen .pdf:stä olisi niin helppoa. Toteutin muunnoksen lopulta Inkscape-ohjelmalla Wikipediasta löytyviä ohjeita mukaillen. Muunnoksessa kyse on käytännössä 1) tiedoston avaamisesta ohjelmassa 2) halutun sivun valitsemisesta ja 3) tiedon uudelleentallentamisesta .svg-muodossa.

Lopulliseen visualisointiin toteutimme mahdollisuuden valita karttaan tarkastelun alle kaksi eri tilastoa:
  1. Missä lääkärille pääsee nopeimmin?
  2. Missä lääkäriajan saa helpoimmin?
Lisäksi merkitsimme karttaan sinisillä palluroilla tilastojen mukaan parhaat terveyskeskukset. (Vis 1)

Kartta sisällytettiin uutisen yhteyteen ja siitä oli mahdollisista tarkastella sairaanhoitopiirejä haluamansa muuttujan perusteella. (Vis 1)
Toteutin projektin pääasiassa viikonlopun (26.10. - 28.10.) aikana, mutta maanantaina ja tiistaina jouduin tekemään vielä muutamia pieniä viilauksia esimerkiksi, jotta saimme kartan toimimaan Internet Explorer -selaimessa. Lisäksi halusimme alunperin toteuttaa kartan "inline-koodina", joka upotettaisiin suoraan uutissivuston leipätekstin sekaan, mutta jouduimme lopulta tyytymään iframe-toteutukseen. Inline-koodin etu iframe-toteutukseen nähden olisi ollut laajempi yhteensopivuus eri laitteiden kanssa sekä parempi mobiilikäytettävyys. Edellä mainituissa viilauksissa sain apua Yle:n Web-suunnittelija Oskari Blombergilta, josta suuri kiitos.

Lopullinen uutinen julkaistiin sunnuntaina 4.11. maanantaina 5.11. ja on luettavissa Yle Uutisten verkkosivuilta.