- Simple
- Moi rápida de facer
- Utiliza poucos ingredientes diferentes que combinan para obter resultados de sabor moi diferentes
- Fácilmente replicable
- Visualmente atractiva
- Con sabores que enganchan
10 de octubro de 2019
ggplot2
baséase na gramática de gráficos:
ggplot(data = datos, mapping = aes(
ggplot()
úsase para vincular o gráfico a un conxunto de datos a través do argumento dataaes()
ggplot(data=datos,mapping=aes(x=Idade.Media,y=RDBph))
Agregar geoms para indicarlle como se representan os datos no gráfico (puntos, liñas, barras, …)
geom_point()
para diagramas de dispersióngeom_boxplot()
para diagramas de caixageom_bar()
para diagramas de barras
Para engadir un geom, emprégase o operador +
library(ggplot2) datos=read.csv2("datos.csv",header=T, fileEncoding = "windows-1252") ggplot(data = datos, mapping = aes(x=Idade.Media,y=RDBph))+ geom_point()
head(datos[,c(1:10,15)])
Nome Espazo cod_provincia provincia Ano Poboacion RDBph 1 15001 Abegondo 15001 15 A Coruña 2016 5533 13726 2 15002 Ames 15002 15 A Coruña 2016 30544 15188 3 15003 Aranga 15003 15 A Coruña 2016 1982 10869 4 15004 Ares 15004 15 A Coruña 2016 5672 13369 5 15005 Arteixo 15005 15 A Coruña 2016 31239 13455 6 15006 Arzúa 15006 15 A Coruña 2016 6211 12862 Idade.Media Indice.Envellecemento Pob_20_64 pens_hab 1 50.05 224.32 56.92 297.307 2 38.90 49.14 65.26 118.026 3 55.04 501.61 52.36 378.406 4 47.20 164.98 58.81 234.661 5 41.37 76.88 65.74 170.236 6 49.82 227.03 57.17 284.173
ggplot(datos,aes(x=Idade.Media,y=RDBph))+ geom_point(aes(color=provincia))
ggplot(datos,aes(x=Idade.Media,y=RDBph))+ geom_point(aes(color=provincia))+geom_smooth()
a=ggplot(datos,aes(x=Idade.Media,y=RDBph,text=Nome))+ geom_point(aes(color=provincia)) ggplotly(a)
datosSerie=read.csv2("datosSerie.csv",header=T, fileEncoding = "windows-1252") datosSerie[c(1:7,20:24),]
Espazo Nome Ano Poboacion Pob_20_64 Indice.Envellecemento 1 15030 A Coruña 2006 243320 65.27 130.21 2 15030 A Coruña 2018 244850 59.51 146.28 3 15030 A Coruña 2012 246146 62.70 139.69 4 15030 A Coruña 2008 245164 64.94 132.53 5 15030 A Coruña 2002 242458 65.23 116.73 6 15030 A Coruña 2013 245923 62.10 141.02 7 15030 A Coruña 2003 243902 65.31 121.79 20 15036 Ferrol 2016 68308 58.68 179.66 21 15036 Ferrol 2002 79520 62.65 132.52 22 15036 Ferrol 2009 74273 62.16 154.95 23 15036 Ferrol 2017 67569 58.37 183.25 24 15036 Ferrol 2003 78764 62.67 139.12
ggplot(datosSerie,aes(x=Ano,y=Indice.Envellecemento,color=Nome))+ geom_line()
ggplot(datosSerie,aes(x=Ano,y=Indice.Envellecemento,color=Nome))+ geom_line()+geom_point()
a=ggplot(datosSerie,aes(x=Ano,y=Indice.Envellecemento,color=Nome))+ geom_line()+geom_point() ggplotly(a)
ggplot(datosSerie,aes(x=Ano,y=Indice.Envellecemento,color=Nome))+ geom_line()+geom_point()+facet_wrap(~Nome,nrow=2)
ggplot(datosSerie,aes(x=Ano,y=Indice.Envellecemento,color=Nome))+ geom_line()+geom_point()+ labs(title="Evolución do Índice de envellecemento 2002-2018")+ labs(x="Periodo",y="Índice de envellecemento",color="Concello")
xrange <- range(datosSerie$Ano) yrange <- range(datosSerie$Indice.Envellecemento) n=length(unique(datosSerie$Espazo)) plot(xrange, yrange, type="n", xlab="Ano", ylab="Indice" ) colors <- rainbow(n) linetype <- c(1:n) plotchar <- seq(18,18+n,1) j=1 for (i in unique(datosSerie$Espazo)) { un <- subset(datosSerie, Espazo==i) lines(un$Ano, un$Indice.Envellecemento, type="p", lwd=1.5, lty=linetype[j], col=colors[j], pch=plotchar[j]) j=j+1 } title("Índice de Envellecemento en Galicia") legend(xrange[1], yrange[2], 1:n, cex=0.8, col=colors, pch=plotchar, lty=linetype, title="Concello")
ggplot2
permite facer mapas de coropletasgeom_polygon
Co ficheiro datos
queremos representar o número de pensións por habitante nos concellos de Galicia
datos=read.csv2("datos.csv",header=T, fileEncoding = "windows-1252") concellos=readOGR("Concellos_314_F_region.shp",verbose=FALSE) proj4string(concellos) <- CRS("+proj=utm +zone=29") map=spTransform(concellos,CRS("+proj=longlat")) map_df <- fortify(map,region="COD_MUN2") datos2=datos[,c(1:2,15)] names(datos2)[2]="id" datos2$id=as.character(datos2$id) map_df=left_join(map_df,datos2) p.gal <- ggplot(map_df, aes(x = long, y = lat, group = group,text=Nome)) + geom_polygon(aes(fill = pens_hab), colour = "white", size = 0.1)+ scale_fill_continuous(name="Pensións por habitante", low = "#fff7ec", high = "#7F0000") ggplotly(p.gal)
datos=read.csv2("e_interna.csv")[,-1] datos=arrange(datos,desc(emigrantes)) datos[1:10,]
CodConcelloOrixe CodConcelloDestino emigrantes 1 15030 15058 13022 2 15030 15031 11269 3 15030 15005 10212 4 15036 15054 9898 5 15078 15002 9855 6 15058 15030 8031 7 15031 15030 7283 8 15030 15017 6977 9 15005 15030 6856 10 15054 15036 6329
Emprégase o geom_polygon
e geom_segment
datos=read.csv2("e_interna.csv")[,-1] concellos=readOGR("Galicia_concellos_313.shp") map=spTransform(concellos,CRS("+proj=longlat")) centros=coordinates(map) map_df <- fortify(map,region="cod") centros=data.frame(as.numeric(as.character(map@data$cod)),centros)) names(centros)=c("codigo","long","lat") or.xy<- merge(datos, centros, by.x="CodConcelloOrixe", by.y="codigo") names(or.xy)<- c("origin", "destination","emigrantes","oX", "oY") dest.xy<- merge(or.xy, centros, by.x="destination", by.y="codigo") names(dest.xy)<- c("destination","origin", "emigrantes", "oX", "oY", "dX", "dY") a=ggplot(dest.xy[which(dest.xy$emigrantes>20),], aes(oX, oY))+ geom_polygon(data= map_df, aes(long,lat, group=group),fill="gray30")+ geom_segment(aes(x=oX, y=oY,xend=dX, yend=dY, alpha=emigrantes),col="red") a
Destinos preferidos de migración interna
Emprégase o geom_polygon
e geom_segment
ggplot()+ geom_polygon(data= map_df, aes(long,lat, group=group), fill="gray30")+ geom_segment(data=dest.xy,aes(x=oX, y=oY,xend=dX, yend=dY, color=indicador), arrow =arrow(length = unit(0.01, "npc")))+ scale_colour_distiller(palette="Reds",direction=1, name="Indicador", guide = "colorbar") + labs(title="Destinos preferidos da migración interna")
Empregando ggplot2 podemos cociñar gráficos
Rápido
De xeito sinxelo engadindo ingredientes
Elegantes
Con sabores que enganchan ????
MOITAS GRAZAS