Skip to content

Commit

Permalink
added examples
Browse files Browse the repository at this point in the history
  • Loading branch information
smukkejohan committed Jan 28, 2016
1 parent 442c7e7 commit 68c72db
Show file tree
Hide file tree
Showing 16 changed files with 791 additions and 0 deletions.
203 changes: 203 additions & 0 deletions README.md
@@ -1,2 +1,205 @@
# medtek2016
Political data visualization with twitter and processing curriculum and examples for course on media and technology at Roskilde University. February 2016.



MedTek 2016

- Basal SQL
- Fokus på forskellige former for data visualisering
- guide til opsætning af twitter API key
- søjlediagram
- abstrakt visualisering
- visualisering over tid
- dataforståelse / statistik
- dårlige til matematik og statistik
- eksempler på måder at sorterer ting
- adgang til metadata, billeder

- netværksanalyse
- hvad bliver der linket til

text analysis
-

sammenhold med ft.dk statistik evt.

overvej om de skal forholde sig til live data overhovedet.


Database
stw index på 1 ord
stwi2i index på 2 ord
og 3 ord
...

Temaet er fortællinger

Materiale til 6 kursusgange

Regner med netværksproblemer

Cache live twitter queries fra API
- lokalt på computer?

Server Download Datasets - Fleksibel

sqlite lokalt
brug materiale til flere kurser

Designopgave, – analyse og eksperiment med udgangspunkt i kursets emner – data fra sociale medier – kreativ bearbejdning af disse fx • let forståelige fremstillinger eller • abstrakte ”kunstneriske” fortolkninger

- 238 - faktura + 30% (timer)
- timesats 205 -

timer uvist max 90

---
Guide til twitter:
Gå til dev.twitter.com
Login med bruger og password, opret en konto hvis du ikke har en
Klik på manage your apps nederst på siden eller gå til apps.twitter.com
Klik create new app midt på siden
Udfyld navn og beskrivelse
fx. medtek16_gruppe1
Exploring visualisation of danish politics at course on data visualization on Roskilde University.


Inspiration:
http://filip.journet.sdu.dk/twitterpolitikere/

N-grams and Markov chains
http://www.decontextualize.com/teaching/rwet/n-grams-and-markov-chains/


index unique word-level order-X n-grams


Mashup opposing politicans in correct sentence structures.

Generate new tweets for party based on historic data

Markov chain statistical generated political tweets

http://www.chrisharrison.net/index.php/Visualizations/WebTrigrams

Trigrams

Gennemsnitligt profilbillede
Gennemsnitlig politiker feed, navn, indhold mm.

https://github.com/yusuke/twitter4j.git

Artikelr der bliver linket til

Allison PArrish inspiration

http://shiffman.net/teaching/a2z/generate/#ngrams
https://github.com/aparrish/gen-text-workshop

context free grammar

Interessante ord:
medicinsk cannabis
prostitution
grænse bom
invandring
csc
ulighed
rimelighed
justits
hacker
angreb
sikkerhed
forsvar

modpoler ....

konstruktiv, konstaterende / agribende

solidaritet

frihed


Vækst

mad

form

DK + tillægsord

ord + tillægsord -> hvilke tillægsord

politik og køn - hudfarve
alder på politkere
bruger database

caps lock
?? !!

/usr/local/Cellar/mysql/5.6.27/bin/mysql_install_db --verbose --user=johan --basedir=/usr/local/Cellar/mysql/5.6.27 --datadir=/usr/local/var/mysql --tmpdir=/tmp


Skema
MEDTEK
Scheduled: 18 Feb 2016 09:30 to 15:30

MEDTEK
Scheduled: 22 Feb 2016 09:30 to 15:30 kan ikke

MEDTEK
Scheduled: 25 Feb 2016 09:30 to 15:30 kan ikke

MEDTEK
Scheduled: 29 Feb 2016 09:30 to 12:30 kan ikke

MEDTEK
Scheduled: 03 Mar 2016 09:30 to 15:30 kan ikke

MEDTEK
Scheduled: 07 Mar 2016 09:30 to 15:30 kan ikke

MEDTEK
Scheduled: 10 Mar 2016 09:30 to 12:30 kan ikke


live data excersise

fetch and draw

hent og tegn

Streaming API
and collected data


http://codigogenerativo.com/code/twitter-para-processing-2-0/

https://www.youtube.com/watch?v=gwS6irtGK-c


convert mysql to sqlite
https://gist.github.com/esperlu/943776


https://github.com/sqlitebrowser/sqlitebrowser

simple cache proxy

brew install mysql

myysql.server start

mysql -uroot

=> CREATE DATABASE medtekpol16
=> USE medtekpol16;







112 changes: 112 additions & 0 deletions example1/example1.pde
@@ -0,0 +1,112 @@
// Eksempel 1 - Forbind til sqlite database
// I dette ekesempel opretter vi forbindelse til databasen og
// laver et enkelt simpelt dataudtræk med alle tweets

// Vi bruger tabellen st der har følgende kolonner

// parti
// text
// user
// id
// image
// created_at
// time
// dayno
// weekno

// En tabel i en database er lidt som et regneark med rækker og kollonnner
// Hver kolonne definerer en type data vi lagrer og hver række indeholder den specifikke data
// I dette tilfælde er hver række et tweet og forskellige metadata om det tweet

// Her importerer vi BEzierSQL, det er et library vi bruger til
// at forbinde og søge data i databasen
// BEzierSQL skal du ligge i mappen libraries
import de.bezier.data.sql.*;

// BEzierSQL har en klasse der hedder SQLite, den bruger vi til at interface med vores
// SQLite database
SQLite db;


import java.text.SimpleDateFormat;
import java.util.Date;

// I setup funktionen ligger kode der bliver kørt én gang når programmet starter
void setup() {

// Opret database klassen, sørg for at st.db den ligger på den rigtige sti
db = new SQLite( this, "../data/st.db" );

// forbind til databasen
if ( db.connect() ) {

// Her skrive vi vores SQL forespørgsel
// Vælg alt fra tabellen st
// Stjernealias (*) bruges som en genvej til at vælge alle felter i en tabel
String Q = "select * from st";

// String Q = "select * from st";
// er det samme som at skrive
// String Q = "select parti, text, user, id, image, created_at, time, dayno, weekno from st";

// Udfør forespørgslen, vores query
db.query(Q);

// Løb resultaterne igennem et af gangen
while (db.next ()) {

// funktionen db.next() flytter en markør et felt
// frem i resultatet af den query vi har foretaget
// når der ikke er flere resultater returnere den false

// nu kan vi tilgå de forskellige felter i st tabellens kolonner
// med følgende funktioner
// String number = db.getString([KOLONNENS_NAVN])
// Bruges til at tilgå tekstfelter

// int tal = db.getInt([KOLONNENS_NAVN])
// Bruges til at tilgå tal felter

// I vores tabel har vi kun de to typer data, tekst og heltal
// I processing bruger vi datatypen String til tekst og int til heltal
// i vores database hedder typerne varchar og integer

// Gem twitter beskedens indhold i en variabel
String tweet = db.getString("text");

// Gem tidspunkt twitter beskeden er lagt ud

int time = db.getInt("time");

// Tidspunktet er et unix timestamp
// Det er en simpel måde at regne tid på hvor alle tidspunkter
// er defineret som det antal sekunder der er gået siden 1. Jan 1970 (UTC)
// man bruger ofte unix timestamp til at repræsenterer tidspunkter når man programmere
// da det er meget simplere at bruge et enkelt tal til fx. at sortere en database efter dato
// end det er at bruge vores system i år, måneder, dage, timer, minutter og sekunder hvor ingen af
// delelementerne går op i 10

// Lad os skrive ud for hvert tweet indholdet af beskeden og hvornår det er postet
// println skriver tekst til panelet nederst i processing vinduet
println("Tidspunkt: " + time + ", Tweet: " + tweet );

// Øvelser:

// 1. prøv at skrive ud hvem der har skrevet twitter beskeden, ligger i kolonnen user

// 2. prøv at skrive tidspunkterne i et andet format, år, måned, dag, time, minut fx.
// hint, søg på
Date pdate = new Date();
pdate = new SimpleDateFormat("ddMMMyy:HH:mm").parse(time);

println(pdate);


}

exit();
}
}


// Yderligere læsning:
2 changes: 2 additions & 0 deletions example1/sketch.properties
@@ -0,0 +1,2 @@
mode.id=processing.mode.java.JavaMode
mode=Java
60 changes: 60 additions & 0 deletions example_2_time_and_dates/example_2_time_and_dates.pde
@@ -0,0 +1,60 @@
// Eksempel 2 - Konverter tidspunkter i java
// I dette ekesempel ser vi på hvordan vi kan arbejde med de datoer og tidspunkter der ligger i databasen

import de.bezier.data.sql.*;
SQLite db;

// vi skal bruge de to følgende java klasser til at bearbejde tid og dato
import java.text.SimpleDateFormat;
import java.util.Date;


void setup() {
db = new SQLite( this, "../data/st.db" );

if ( db.connect() ) {

String Q = "select time, text from st";

db.query(Q);

while (db.next ()) {

String tweet = db.getString("text");

int time = db.getInt("time");

// Tidspunktet er et unix timestamp
// Det er en simpel måde at regne tid på hvor alle tidspunkter
// er defineret som det antal sekunder der er gået siden 1. Jan 1970 (UTC)
// man bruger ofte unix timestamp til at repræsenterer tidspunkter når man programmerer
// da det er meget simplere at bruge et enkelt tal til fx. at sortere en database efter dato
// end det er at bruge vores system i år, måneder, dage, timer, minutter og sekunder hvor ingen af
// delelementerne går op i 10

// java bruger unix timestamps der defineret ned til millissekunder og ikke kun sekunder
// du skal derfor gange tidspunktet med 1000
Date date = new Date((long)time*1000);

// brug SimpleDateFormat klassen til at definerer hvordan dato og tid skal formateres
// se oversigt her over de forskellige bogstaver du kan bruge:
// http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

String newDateString = new SimpleDateFormat("d. MMM HH:mm").format(date); // 9:00

// Lad os forkorte tweetet lidt så det er nemmere at overskue datoerne
tweet = tweet.substring(0, Math.min(tweet.length(), 20)) + "...";

println(newDateString + ": " + tweet);

// Øvelse:
// 1. Formater datoen med navnet på hvilken ugedag

}

exit();
}
}



2 changes: 2 additions & 0 deletions example_2_time_and_dates/sketch.properties
@@ -0,0 +1,2 @@
mode.id=processing.mode.java.JavaMode
mode=Java

0 comments on commit 68c72db

Please sign in to comment.