keskiviikko 21. marraskuuta 2012

Sormiharjoitus Twitter-datalla

Julkaisin viime viikolla twiitin, jossa kerroin erilaisista tunnusluvuista koskien Twitter:ni käyttöä ja lisäksi olin liittänyt mukaan kuvassa 1 näkyvän twiittieni sanapilven.

Avasin twiittieni tunnuslukuja ja piirsin sisällöistä sanapilven. (Kuva 1)
Mielestäni tekemäni sormiharjoitus oli siinä määrin hauska ja dataa monipuolisesti käsittelevä, että halusin jakaa kokemukseni. En väitä, että käsittelemäni menetelmät olisivat paras tapa selvittää kyseisiä Twitter-tilin tietoja, mutta käytän niitä tässä, koska ne ovat hyödynnettävissä hyvin monenlaisessa datan käsittelyssä.



Tarina sai alkunsa kun löysin netistä palvelun nimeltä All My Tweets, joka listaa annetun käyttäjän kaikki twiitit (3000 ensimmäistä). Egosentrisenä ihmisenä lähdin kokeilemaan oman tilini tilannetta ja löysin palvelulla tuolloin 1729 twiittiä. Tarkastin, että luku täsmäsi Twitter-profiilistani löytyvään arvoon.

Mieleeni tuli, että voisin visualisoida twiitit avainsanapilvenä. Ajattelin, että tämä olisi helppoa verkosta löytyvän Wordle-työkalun avulla, joka mahdollistaa avainsanapilvien toteuttamisen yksinkertaisesti syöttämällä palveluun sisältöä. Haluttu sisältö oli mahdollista kopioida All My Tweets -palvelusta leikepöydälle ja sieltä Wordle:en, mutta ongelma oli, että tässä selaimen ruudulta kopioidussa sisällössä olivat mukana twiittien aikaleimat (esim. Nov 17, 2012). Nämä aikaleimat mielletään Wordle:n puolesta myös osaksi sisältöä, joten halusin päästä niistä eroon, koska ne olisivat esiintymistiheytensä myötä nousseet avainsanapilvessä hallitsevaan asemaan. (Kuva 2)

Nappasin twiittini All My Tweets -palvelusta yksinkertaisesti maalaamalla ja kopioimalla koko sivun sisällön leikepöydälle. (Kuva 2)
Ratkaisin ongelman jatkokäsittelemällä Twitter-dataani. Datan käsittelyyn ja esimerkiksi tämankaltaisen aikaleimatiedon poistamiseen on useita eri mahdollisuuksia, mutta toteutin siivoamisen säännöllisten lausekkeiden avulla Sublime Text -editorissa. Sublime Text on periaatteessa hyvin tavallinen tekstieditori, joka kuitenkin sisältää konepeltinsä alla hyvin laajan ominaisuuksien kirjon. Yksi hyödyllisistä on "etsi/korvaa" -toiminnallisuus, joka mahdollistaa merkkijonojen korvaamisen –  perinteisen tavan lisäksi myös – säännöllisten lausekkeiden avulla.

Säännölliset lausekkeet mahdollistavat hakuehtojen muodostamisen erinäisten hahmojen (engl. pattern) avulla. Säännöllisten lausekkeiden avulla on esimerkiksi mahdollista hakea päivämäärää muodossa 2012-11-19 käskemällä ohjelman etsiä merkkijonoa jossa on:
  • neljä numeroa
  • viiva
  • kaksi numeroa
  • viiva
  • kaksi numeroa.
Näin ollen säännöllisten lausekkeiden avulla on mahdollista hakea kerralla kaikki tekstissä esiintyvät päivämäärät ja muuntaa ne esimerkiksi suomalaiseen muotoon 19.11.2012. Tavallisella etsi/korvaa -toiminnolla tämänkaltainen muuntaminen olisi mahdollista vain päivämäärä kerrallaan.

Tässä tapauksessa halusin poistaa tekstistä kaikki "Nov 16, 2012" -tyyliset merkkijonot. Hakemassani merkkijonossa tulisi siis löytyä:
  • kolme kirjainta
  • välilyönti
  • kaksi numeroa
  • pilkku
  • välilyönti 
  • neljä numeroa. (Kuva 3)
Säännöllisen lausekkeen löytämät merkkijonot näkyvät rajattuina suorakulmioihin. Haettu merkkijono korvataan tyhjällä eli käytännössä poistetaan. (Kuva 3)
Koska tavoitteeni oli poistaa löydetyt päivämäärää kuvaavat merkkijonot valitsin, että kyseisen haun tulokset korvattaisiin tyhjällä merkkijonolla. Haun löytämät merkkijonot näkyvät kuvassa 3 nelikulmioihin rajattuina. Rakentamassani säännöllisessä lauseessa käyttämäni hahmot ovat:

  • a-z, mikä tahansa pieni kirjain väliltä a-z
  • A-Z, mikä tahansa kapitaali kirjain välillä a-z
  • 0-9, mikä tahansa numero välillä 0-9.

Edelleen halusin poistaa All My Tweets -palvelun datasta "RT" merkinnät, koska nämä eivät sinällään olleet twiittien varsinaista sisältöä, jonka halusin mukaan sanapilveen. RT merkkijonon poistamisessa minun ei tarvinnut hyödyntää säännöllisiä lausekkeita, vaan hain yksinkertaisesti merkkijonoa "RT ". Eli hain merkkijonoa, jossa esiintyi järjestyksessä:
  • kapitaali R
  • kapitaali T
  • välilyönti. (Kuva 4)
Sublime Text näyttää tehdyn haun löytämien merkkijonojen esiintyminen määrän editorin vasemmassa alakulmassa, joten ennen kuin tein korvaamisen tarkistin, montako kertaa "RT " esiintyi datassa. Koska RT merkintä tarkoitti, että twiitti oli retwiitti, sain näin selville kuinka moni twiiteistäni oli retwiitti. (Kuva 1)

Halusin poistaa merkkijonot "RT ", mutta samalla selvittää kuinka monta kertaa se datassa esiintyi. (Kuva 4)
Samalla periaatteella ja etsimistoiminnolla tutkin montako kertaa datassa esiintyivät merkit "@" ja "#", jolloin sain selville montako kertaa olin maininnut henkilön ja montako kertaa olin viitannut johonkin Twitter-kanavaan (kts. Twitter-terminilogiaopas). Jälkikäteen ajateltuna olisi ollut, ehkä järkevää poistaa datasta myös henkilöiden maininnan, koska ne nousivat niin hallitsevaan rooliin lopputuloksessa. (Kuva 1)

Lopuksi kopioin käsittelemäni datan Sublime Text -editorista Wordle-palveluun. Wordle on hyvin yksinkertainen käyttää. Haluttu data kopioidaan leikepöydän kautta palveluun, jonka jälkeen käyttäjän on mahdollista piirtää avainsanapilvi haluamallaan tavalla lukuisiin eri muuttujiin perustuen. (Kuva 5) Itse olen käyttänyt lähinnä palvelun "randomize" toimintoa kunnes olen saanut mieleiseni lopputuloksen, mutta palvelu mahdollistaa muuttujien määrittämisen myös käsin. Lopputuloksen otin palvelusta talteen ruudunkaappausohjelmistolla.

Wordle-palveluun on mahdollista liittää mitä tahansa tekstiä tai suoraan haluttu RSS-virta. (Kuva 5)
Käytin siis hyväksi kahta verkosta löytyvää ilmaispalvelua – All My Tweets ja Wordle – sekä Sublime Text -editoria yhdessä säännöllisten lausekkeiden kanssa. Näiden työkalujen avulla keräsin, käsittelin, jäsensin, analysoin ja visualisoin dataa. Tämänkaltainen useiden eri työkalujen käyttäminen on usein tehokasta, koska toiset työkalut ovat hyviä toisissa asioissa kun taas toiset pureutuvat paremmin toisenlaisiin haasteisiin.

Ja eikun itse kokeilemaan! Kuulen mielelläni tuloksista :)

Muokkaus: 22.11.2012

Tässä Micke Hindsbergin versio:
https://twitter.com/mickhinds/status/271282180423032832

Muokkaus: 27.11.2012

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

Tässä Anna-Sofia Niemisen versio:
https://twitter.com/SofiaNieminen/status/273125304132845569

sunnuntai 18. marraskuuta 2012

Datajournalismia Aalto-yliopistolla 15.11.2012

Kävin viime torstaina Markku Reunasen pyynnöstä vierailuluennoimassa Aalto-yliopistolla datajournalismista opintojaksolla "Dynamic Visualization Design 1". Paikalla oli n. kymmenpäinen ja kansainvälinen joukko dynaamisesta visualisoinnista kiinnostuneita ihmisiä.

Vedin esityksen hyvin samalla pohjalla kuin viime kuussa Yle:llä pitämäni Datajournalismi-koulutuksen. Keskityin siis lähinnä erilaisten esimerkkien läpikäymiseen, koska mielestäni ne ovat parasta antia tämankaltaisessa sisällössä.

Lisäksi pääteemani oli kertoa, että kyse on teknisesti hyvin yksinkertaisista ja loogisista toteutuksista, jotka eivät todellakaan vaadi ylimäärin työtä tai osaamista taakseen. Lisäksi pyrin vahvasti tuomaan esiin, että käyttämäni työkalut ovat vapaasti saatavilla olevia avoimeen lähdekoodiin perustuvia toteutuksia. (Kuva 1)

Klikkaa kuvaa siirtyäksesi kalvoihin. (Kuva 1)
Havaitsin, että tarvetta olisi ollut esitellä asioita pidempäänkin kuin kolmen tunnin ajan ja etenkin itse kokeileminen ja konkreettisesti asioiden läpikäyminen – ihan teknologiatasolla – olisi kiinnostanut. Sovimmekin alustavasti Markun kanssa, että olisi mahdollista, että voisin tulla mukaan vetämään jonkinlaista työpajaa myöhemmin keväällä.

Joka tapauksessa minut nähdään ainakin datajournalismin merkeissä Tampereen yliopistolla maaliskuussa.

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.