#Part I - plots básicos

mix.stop <- read.delim("Mixtec_stops_abridged.txt")
plot(VOT~Consonant, data=mix.stop)

  #Cómo ajustamos el orden de los consonantes por punto
  de articulación?

mix.stop$Consonant <- factor(mix.stop$Consonant, levels=c("/p/", "/t/", "/k/", "/kw/"), labels=c("p", "t", "k", "kw"))

  #Ahora produzca 3 figuras, uno para cada nivel del factor "Category." Cheque bien que se etiqueta el eje y "VOT (ms)" y el eje x "Punto de articulación." Ponga títulos en cada ventana de la figura. Asegurese que cada figura está dibujada con el mismo rango en el eje y.

init.d <- subset(mix.stop, Category=="initial.disyllable")
med.d <- subset(mix.stop, Category=="medial.disyllable")
init.m <- subset(mix.stop, Category=="initial.monosyllable")
par(mfrow=c(1,3), cex=1.2, mar=c(5, 4, 4, 2))
plot(VOT~Consonant, data=init.m, main="Duration in initial \n monosyllables", ylab="VOT (ms)", xlab="Place of articulation", ylim=c(0, 60))
plot(VOT~Consonant, data=init.d, main="Duration in initial \n disyllables", ylab="VOT (ms)", xlab="Place of articulation", ylim=c(0, 60))
plot(VOT~Consonant, data=med.d, main="Duration in medial \n disyllables", ylab="VOT (ms)", xlab="Place of articulation", ylim=c(0, 60))

#Part II - herramientas más avanzadas - plotmeans()

library(gplots)
par(mfrow=c(1,1))
plotmeans(VOT~Consonant, data=mix.stop, ylim=c(0, 60), p=.99, connect=FALSE)

#Datos de los tonos de triqui

tr.tone <- read.delim("Triqui_pitch_timed.csv")
summary(tr.tone)
open.tone <- subset(tr.tone, Context=="open")
open.tone.t1 <- subset(open.tone, Tone=="T1")
open.tone.t2 <- subset(open.tone, Tone=="T2")
open.tone.t3 <- subset(open.tone, Tone=="T3")
open.tone.t4 <- subset(open.tone, Tone=="T4")

par(cex=2, mar=c(5, 4, 4, 2), mfrow=c(1,1))
plotmeans(zF0~Time, data=open.tone.t1, ylim=c(-1, 1), n.label=FALSE, pch=1)
plotmeans(zF0~Time, data=open.tone.t2, add=T, n.label=FALSE, pch=2, col="red", xaxt="n")
plotmeans(zF0~Time, data=open.tone.t3, add=T, n.label=FALSE, pch=3, col="blue", xaxt="n")
plotmeans(zF0~Time, data=open.tone.t4, add=T, n.label=FALSE, pch=4, col="green", xaxt="n")

#Se puede agregar elementos como claves. Estos claves pueden contener muchos elementos.

legend("top", horiz=TRUE, c("T1", "T2", "T3", "T4"), pch=c(1, 2, 3, 4), col=c("black", "red", "blue", "green"), x.intersp=0.6)

#Part III - GGPLOT2
library(ggplot2)
summary(mtcars)

#Haciendo un plot (# cilíndros en mtcars)
qplot(factor(cyl), data=mtcars, geom="bar")

#Ahora dos factores en un plot de dispersión.
qplot(mpg, wt, data=mtcars)

#Parece igual a lo que observamos con R básico
plot(mpg~wt, data=mtcars)

#Pero mire lo que podemos hacer en ggplot2.
qplot(mpg, wt, data=mtcars, col=hp, size=cyl)
qplot(mpg, wt, data=mtcars, col=cyl, main="Weight by MPG for cars")

#Datos de oclusivas de mixteco con qplot.

qplot(Consonant, VOT, data=mix.stop)
qplot(Consonant, VOT, col=Category, data=mix.stop)
qplot(Consonant, VOT, col=Category, geom="boxplot", data=mix.stop)
qplot(Consonant, VOT, geom="boxplot", data=mix.stop) + facet_wrap(~Category)
qplot(Consonant, VOT, geom="boxplot", data=mix.stop) + facet_wrap(~Speaker, ncol=8)
qplot(Consonant, VOT, data=mix.stop, geom="boxplot", facets=Size~Context)

#La función más compleja es ggplot(). Nos permite incluir muchos detalles pero su sintáxis es muy diferente.

p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()

#Separamos ggplot() del geométrico porque una parte es importar los datos en el objeto. Otra parte es asignar parametros geométricos.

p + geom_boxplot(aes(fill = factor(am)))

#El geométrico es un comando - tiene sus proprios argumentos. Se puede considerar ggplot() una función que toma muchos argumentos, cada uno con su propria estructura de subcategorización.

#Investigamos datos de Arapaho (las vocales)

#Plot con 3 dimensiones.
arap <- read.delim("Arapaho_vowels2.txt")
arap.plot <- ggplot(arap, aes(factor(Vowel), Duration*1000, color=Length)) + labs(title="Arapaho vowel duration", y="Duration (ms)")
arap.plot + geom_boxplot()

#Ahora con fondo blanco.
arap.plot <- ggplot(arap, aes(factor(Vowel), Duration*1000, color=Length)) + theme_bw(base_size=16)
arap.plot + geom_boxplot()

#Con etiquetas
arap.plot <- ggplot(arap, aes(factor(Vowel), Duration*1000, color=Length)) + theme_bw(base_size=16) + ylab("Duration (ms)") + xlab("Vowel quality and length") + ylim(0, 300)
arap.plot + geom_boxplot(aes(col=Length), outlier.size=0)

#Ahora con facetas.
arap.plot <- ggplot(arap, aes(factor(Vowel), Duration*1000, color=Length)) + theme_bw(base_size=16) + ylab("Duration (ms)") + xlab("Vowel quality and length") + ylim(0, 300)
arap.plot + geom_boxplot(aes(col=Length), outlier.size=0) + facet_wrap(~Speaker)

#Y proporciones?
bdat <- read.delim("BresDative.txt", sep=" ")
bdat.plot <- ggplot(bdat, aes(x = defrec, fill=real)) + geom_bar()
bdat.plot 

bdat.plot <- ggplot(bdat, aes(x = defrec, fill=real)) + geom_bar() + scale_fill_discrete("Response", labels = c("NP" = "Noun Phrase", "PP" = "Prepositional phrase"))
bdat.plot

bdat.plot <- ggplot(bdat, aes(x = defrec, fill=real)) + geom_bar(aes()) + scale_fill_discrete("Response", labels = c("NP" = "Noun Phrase", "PP" = "Prepositional phrase")) + scale_x_discrete("Definiteness of recipient", labels=c("definite" = "definite", "indef" = "indefinite"))
bdat.plot + facet_wrap(~prorec)

#Por fin, qué tal si queremos incluir estadísticas? Se puede incluir estas cosas en plots de caja (barplots).

rate <- read.delim("Rate.csv")

rate.plot <- ggplot(rate, aes(factor(Speaker), Rate)) + ylim(2.5, 7) + stat_summary(fun.data = median_hilow, geom = "pointrange") + geom_boxplot(aes(fill = factor(Rate.condition)), outlier.size = 0) + ylab("Speech rate (syllables/sec)") + xlab("Speaker") + scale_fill_discrete(name="Rate condition")+theme_bw(base_size=16)
rate.plot