Videre nørd i R

Nå. Jeg har høstet data fra Twitter ved hjælp af Python.
Og jeg har visualiseret ved hjælp af Googles visualiserings API. Lækkert.
Jeg har endda fundet ud af kombinere det basale forespørgsels sprog i samme API med Highcharts, så jeg kan lave
live-visualiseringer. Der er lidt der skal pusles med endnu før jeg vil vise det frem. Og det giver også mest
mening i et eksempel hvor der opsamles live-data.

Men kan jeg også visualisere i R? Det er jo også et nyttigt værktøj, som jeg skal lære at kende.

Vi starter med at exportere data i CSV-formatet fra Google spreadsheet.
Dernæst importerer jeg det i R:

twitterdata <- read.csv(file="C:\\Users\\mrk718\\Desktop\\twitterdata.csv",head=FALSE, sep = ",")

Der er dobbelt backslashs fordi backslash bruges til at escape tegn med i R. Derfor skal backslash escapes med et
backslash. \\.
Jeg har ikke kolonneoverskrifter i regnearket. Det skal der nok være fremadrettet, da det gør det lettere at opstarte
en ny dataindsamling. Men derfor: head=FALSE. Og det er komma-separeret, så sep=",".

Så er det inde. Der kan let laves et plot af punkterne.

plot(twitterdata$V1,twitterdata$V2)

Kedeligt plot. primært fordi datoerne ikke er der, så de står som et eller andet i 12.

Efter en hurtig googling af hvordan man konverterer sådan et timestamp til en dato:

plot(as.POSIXct(twitterdata$V1, origin = "1970-01-01" ), twitterdata$V2)

Nu står der mindre, men stadig mærkelig datoer i X-aksen. 48138, 48140 osv.

Men hov! Mon ikke as.POSIXct tager udgangspunkt i UNIX-tidsstempler?
Javascript bruger millisekunder, UNIX nøjes med sekunder.

plot(as.POSIXct(twitterdata$V1/1000, origin = "1970-01-01" ), twitterdata$V2)

Meget bedre. Nu står der godt nok "to" og "fr" på X-aksen. Det passer, men er ikke helt optimalt. I det mindste
har R her styr på at vi er i Danmark, og finder selv ud af at torsdag skal forkortes til to.

Navngivningen af x-aksen er heller ikke helt optimal. Der står

as.POSIXct(twitterdata$V1/1000, origin = "1970-01-01" 

Y-aksen er ikke meget bedre.
plot(as.POSIXct(twitterdata$V1/1000, origin = "1970-01-01" ), twitterdata$V2, xlab = "Tid", ylab = "Antal")

Hep, xlab="hvad jeg vil kalde min x-akse"

Så ylab = "Antal"

type = "l", og jeg har et line-plot. Ikke de pæne splines fra mine tidligere visualiseringer, men vi nærmer os.

Så tilføjer vi format="%d-%m %H:%M:%S" til POSIXct delen:

plot(as.Date(as.POSIXct(twitterdata$V1/1000, origin = "1970-01-01", format="%d-%m %H:%M:%S" )), twitterdata$V2, xlab = "Tid", ylab = "Antal")

Og så crasher det... Jeg får at vide at "need finite 'xlim' values". der er nok noget der har vanskeligt ved at
håndtere max og min af datoer...

Hm. Jeg kunne sagtens får "to" og "fr" på akserne. Men så snart jeg begynder at formattere det - så går det galt. hvorfor mon det.

Google viz 2


lorem ipsum

Det er formentlig den her vi skal have fat på. var formatter = new google.visualization.PatternFormat( '{0}' ); formatter.format(data, [0]);

Google visualiseringstest.

OK. Vi kom et stykke ad vejen. Der er lang vej igen.

  1. Pythonscriptet skal gøres mere robust overfor netudfald. Også gerne strømudfald.
  2. Setuppet skal kunne håndtere at jeg lige pludselig på arbejdet finder på at et hashtag skal følges og visualiseres. Uden at jeg skal hjem og kode først.
  3. Visualiseringerne skal generelt gøres lækrere.

Vi starter med 3.

Nu med klikbare navne! (åbner i enten ny fane eller vindue, afhængig af din browser opsætning)
Jeg har søreme også fået styr på problemerne med at wordpress gør grimme ting ved javascriptet. Der skal "blot" installeres et plugin (text control), der kan slå den automatiske karakterencoding fra.

Jeg har fået styr på farverne. Jeg har fået gjort navnene klikbare. Og så faldt jeg over at det her:

var formatter = new google.visualization.PatternFormat( '{0}' );
formatter.format(data, [0]);

ville kunne bruges til at gøre endnu mere avancerede ting med indholdet af de enkelte kolonner i datasættet.