LOREM IPSUM
Transcripción
LOREM IPSUM
CURSOS DE VERANO 2014 APROXIMACIÓN TÍTULO DEL CURSO PRÁCTICA A LA CIENCIA DE DATOS Y BIG DATA: HERRAMIENTAS KNIME, R, HADOOP Y MAHOUT TÍTULO PONENCIA Visualización de datos con R NOMBRE PROFESOR Francisco Charte Ojeda Epígrafe o tema Contenidos Gráficos básicos Histogramas >> graficosBasicos.R << Agrupación de gráficos Almacenamiento de gráficos Introducción a ggplot2 Otras posibilidades gráficas >> graficosAvanzados.R << plot(iris$Petal.Length, iris$Petal.Width, col = iris$Species, pch = 19, xlab = 'Longitud del pétalo', ylab = 'Ancho del pétalo') 1.5 2.0 2.5 IRIS 1.0 title(main = 'IRIS', sub = 'Pétalos según specie', col.main = 'blue', col.sub = 'blue') 0.5 Ancho del pétalo Gráficos Epígrafe básicos o tema ► Nube de puntos setosa 1 2 3 4 versicolor virginica 5 6 Longitud del pétalo Exploración de los pétalos según especie 7 legend("bottomright", legend = levels(iris$Species), col = unique(iris$Species), ncol = 3, pch = 19, bty = "n") 7 Gráficos Epígrafe básicos o tema ► Gráfico de cajas (bigotes) 5 4 3 7 2 IRIS 6 1 boxplot(iris$Petal.Length ~ iris$Species) title(main = 'IRIS', ylab = 'Longitud pétalo', sub = 'Análisis de pétalo por familia') 4 3 iris$Species 5 virginica 2 versicolor 1 setosa Longitud pétalo iris$Petal.Length 6 plot(iris$Petal.Length ~ iris$Species) setosa versicolor virginica Análisis de pétalo por familia Gráficos Epígrafe básicos o tema ► Líneas Precio de cierre según día plot(meanPricesUS, type = "o", axes = F, ann = F, col = "blue") 48 45 lines(meanPricesEUR,type="o",col="red") Precio final 42 39 axis(1, at=1:length(meanPricesUS), lab = names(meanPricesUS)) 36 33 30 27 axis(2, at = 3*0:rango[2], las = 1) 24 $ € 21 Fri Mon Sat Día Sun Tue title(main='Precio de cierre según día', xlab = 'Día', ylab = 'Precio final') legend("bottomright", c("$","€"), col = c("blue","red"), lty = c(1,1)) Gráficos Epígrafe básicos o tema ► Barras 80 100 Número de operaciones por dia barplot(sapply( endPricePerDay$EUR, length), col = rainbow(7)) 0 20 40 60 title(main = 'Operaciones por día') Fri Mon Sat Sun Thu Tue Wed Gráficos Epígrafe básicos o tema ► Barras Accuracy Precision RAkEL-BR LP-J48 IBLR-ML HOMER CLR BR-J48 0.0 0.1 0.2 0.3 0.4 0.5 accuracy <- aggregate( Accuracy ~ Algorithm, results, mean) precision <- aggregate( Precision ~ Algorithm, results, mean) valMedios <- matrix(c( precision$Precision, accuracy$Accuracy), nrow=6, ncol=2) rownames(valMedios) <accuracy$Algorithm 0.6 barplot(valMedios, beside=T, horiz=T, col = cm.colors(6), legend.text=T, names.arg = c('Accuracy', 'Precision')) Gráficos Epígrafe básicos o tema ► Sectores (circular o tarta) Productos por categoría opPorCategoria <- aggregate( ClosePrice ~ Category, ebay,length)[1:8,] 178 177 colores <- topo.colors(length( opPorCategoria$Category)) 54 18 36 119 37 Antique/Art/Craft Automotive 239 Books Clothing/AccessoriesCollectibles Business/Industrial Coins/Stamps Computer pie(opPorCategoria$ClosePrice, labels=opPorCategoria$ClosePrice, col=colores, main='Productos por categoría') legend("bottom", opPorCategoria$Category, cex=0.6, fill=colores, ncol=4) Histogramas ► Frecuencia Epígrafe o tema Elevación del terreno 100000 50000 0 Frequency 150000 hist(covertype$elevation, breaks = 12, col = rainbow(12), main = 'Elevación del terreno', xlab = 'Metros') 2000 2500 3000 Metros 3500 4000 Histogramas ► Frecuencia Epígrafe o tema Elevación del terreno 5000 10000 plot(histograma, col = ifelse(histograma$breaks < 2500, 'green', ifelse(histograma$breaks > 3000, "red", "blue")), main = 'Elevación del terreno', xlab = 'Metros') 0 Frequency 15000 20000 histograma <- hist(covertype$elevation, breaks = 100) 2000 2500 3000 Metros 3500 Histogramas ► Densidad Epígrafe o tema Distribución normal 0.20 0.10 0.00 Density 0.30 plot(density(rnorm(1000), adjust = 3), col = 'blue', lwd = 4, main = 'Distribución normal', xlab = 'Valores') -4 -2 0 Valores 2 4 Histogramas ► Histograma + Densidad Epígrafe o tema 0.0010 hist(covertype$elevation, prob = T, col = "grey", main = 'Elevación del terreno', xlab = 'Metros') 0.0005 lines(density(covertype$elevation, adjust = 5), col = 'black', lwd = 3) 0.0000 Density 0.0015 Elevación del terreno 2000 2500 3000 Metros 3500 40 50 10 5 6 7 2.0 3.0 4.0 Sepal.Width n:150 m:0 40 50 Sepal.Length n:150 m:0 8 0 0 4 30 virginica 20 versicolor 10 setosa 0 Frequency hist(iris) 20 30 Frequency 60 40 20 Frequency 20 5 10 0 Frequency 30 Histogramas ► Histogramas de objetos compuestos Epígrafe o tema 30 0.0 1.0 2.0 Petal.Width n:150 m:0 70 Frequencies for Species 1 3 5 Petal.Length n:150 m:0 7 Agrupación de gráficos ► Proyecciones 2D Epígrafe o tema 3.0 4.0 0.5 1.5 2.5 7.5 2.0 4.0 4.5 6.0 Sepal.Length 5 7 2.0 3.0 Sepal.Width 1.5 2.5 1 3 Petal.Length 0.5 Petal.Width 4.5 6.0 7.5 1 3 5 7 plot(iris[ ,1:4], col = iris$Species) 4.5 5.5 6.5 2.5 1.5 0.5 iris$Petal.Width 4.0 3.0 2.0 iris$Sepal.Width Agrupación de gráficos ► mfrow/mfcol Epígrafe o tema 7.5 1 4.5 5.5 6.5 7.5 iris$Sepal.Lengt 3 4 5 6 7 2.0 3.0 4.0 iris$Petal.Lengt iris$Sepal.Width 2.5 1.5 0.5 iris$Petal.Width iris$Sepal.Lengt 2 1 2 3 4 5 6 iris$Petal.Lengt 7 prev <- par(mfrow=c(2,2)) plot(iris$Sepal.Length, iris$Sepal.Width, col=iris$Species) plot(iris$Petal.Length, iris$Petal.Width, col=iris$Species) plot(iris$Sepal.Length, iris$Petal.Width, col=iris$Species) plot(iris$Petal.Length, iris$Sepal.Width, col=iris$Species) par(prev) Agrupación de gráficos ► layout Epígrafe o tema # 2x2 con 3 gráficas layout(matrix(c(1,1,2,3), 2, 2, byrow = T)) 800 400 0 Frequency Duración subasta 2 4 6 8 10 Días Operaciones por día Tue Wed Día Thu Sun Sat 20 40 60 80 Mon 0 45 42 39 36 33 30 27 24 21 Fri Euros Wed Tue Thu Sun Sat Mon Fri Precio cierre por día # Gráfico 1 ocupa 1ª fila hist(ebay$Duration, main='Duración subasta', xlab='Días') # Gráfico 2 en 1ª col de 2ª fila barplot(sapply( endPricePerDay$EUR, length), col = rainbow(7), horiz=T,las=1) # Gráfico 3 en 2ª col de 2ª fila plot(meanPricesEUR, type="o") Almacenamiento Epígrafe o tema de gráficos ► Opciones de RStudio Almacenamiento Epígrafe o tema de gráficos ► Funciones de R Generan un archivo en el formato adecuado Mapas de bits: png(), bmp(), jpeg(), tiff() Vectoriales: win.metafile() Otros: postscript(), pdf() Parámetros generales filename, width, height, pointsize, quality Desactivación de la salida al archivo dev.off() Ejemplo pdf('Subastas.pdf', width=8.3, height=11.7) # A4 hist(iris) # Una gráfica por página dev.off() # Cerrar PDF Almacenamiento Epígrafe o tema de gráficos ► Animaciones Funciones en paquete animations saveGIF(), saveVideo(), saveHTML(), saveLatex() Ejemplo de uso saveGIF({ for(lim in seq(-3.14,3.14,by=0.1)) curve(sin, from=lim, to=lim + 9.42) }, movie.name="animacion.gif", interval=0.2, ani.width=640, ani.height=640) Epígrafe o tema Introducción a ggplot2 Ventajas sobre los gráficos básicos Estética mejorada y altamente personalizable Mayor flexibilidad y control Más facilidad para generar gráficos con datos complejos Recursos necesarios Instalar paquete ggplot2 Documentación en http://docs.ggplot2.org/current ggplot2: Elegant Graphics for Data Analysis Ejemplos disponibles en http://ggplot2.org/book Introducción a ggplot2 ► Nube de puntos Epígrafe o tema 4.5 Species 4.0 setosa Sepal.Width versicolor virginica 3.5 Petal.Width 0.5 3.0 1.0 1.5 2.0 2.5 2.5 2.0 5 6 Sepal.Length 7 8 qplot(Sepal.Length, Sepal.Width, data=iris, colour=Species, size=Petal.Width) Introducción a ggplot2 ► Líneas Epígrafe o tema 8 Sepal.Length 7 Species setosa versicolor 6 virginica 5 2 4 Petal.Length 6 qplot(Petal.Length, Sepal.Length, data=iris, color=Species) + geom_line() Introducción a ggplot2 ► Nube de puntos + Curvas de regresión Epígrafe o tema qplot(Petal.Length, Petal.Width, data=iris, color=Species) + geom_point() + geom_smooth() Introducción a ggplot2 ► Densidad Epígrafe o tema qplot(elevation, data=covertype, geom="density", fill=wilderness_area) 0.003 density wilderness_area 1 0.002 2 3 4 0.001 0.000 2000 2500 3000 elevation 3500 Introducción a ggplot2 ► Facets Epígrafe o tema # Representar 5 variables qplot(ClosePrice, sellerRating, data=ebay[ebay$endDay %in% c('Wed','Thu','Fri') & ebay$currency != 'US',], facets=currency ~ endDay, color=Duration) Introducción a ggplot2 ► Facets Epígrafe o tema Fri Mon qplot(currency, ClosePrice, data=ebay[ebay$endDay != 'Wed',], fill=currency) + geom_bar(stat='identity') + facet_wrap(~endDay) Sat 15000 10000 5000 ClosePrice currency 0 EUR Sun Thu Tue GBP 15000 US 10000 5000 0 EUR GBP US EUR GBP currency US EUR GBP US Epígrafe Otras posibilidades o tema gráficas Medio centenar de paquetes gráficos sólo en CRAN http://cran.r-project.org/web/views/Graphics.html Interacción con los gráficos desde navegador web Shiny: http://shiny.rstudio.com/ Multitud de tipos de gráficas alternativas circos, radar, 3D, etc. Gráficos no generados a partir de datos TurtleGraphics Otras posibilidades gráficas ► circlize Epígrafe o tema Otras posibilidades gráficas ► radarchart (paquete fmsb) Epígrafe o tema emotions 1 corel1 1 scene 1ebay 1 yeast Otras posibilidades gráficas ► scatterplot3d Epígrafe o tema -5 0.5 -1.0 0.0 -0.5 -0.5 0.0 x 0.5 1.0 -1.0 y 0 1.0 -10 z 5 10 Helix Otras posibilidades gráficas ► lattice Epígrafe o tema Elevación del terreno Y Z X Otras posibilidades gráficas ► TurtleGraphics Epígrafe o tema turtle_do({ for(j in 1:45) { for(i in 1:6) { turtle_forward(20) turtle_right(360/6) } turtle_right(360/45) }}) CURSOS DE VERANO 2014 APROXIMACIÓN TÍTULO DEL CURSO PRÁCTICA A LA CIENCIA DE DATOS Y BIG DATA: HERRAMIENTAS KNIME, R, HADOOP Y MAHOUT TÍTULO PONENCIA Visualización de datos con R NOMBRE PROFESOR Francisco Charte Ojeda