Mostrando entradas con la etiqueta identify. Mostrar todas las entradas
Mostrando entradas con la etiqueta identify. Mostrar todas las entradas

2015-11-23

Diagramas de dispersión con el paquete car en R

Title

Introducción

La función scatterplot del paquete car nos permite crear diagramas de dispersión mejorados. Incluye diagramas de caja en los márgenes, rectas de regresión suavizadas, identificación de valores atípicos etc. Veremos varios ejemplos usando datos (data frames) incluidos en el propio paquete car: Prestige y UN.

library(car)
head(Prestige)
                     education income women prestige census type
gov.administrators      13.11  12351 11.16     68.8   1113 prof
general.managers        12.26  25879  4.02     69.1   1130 prof
accountants             12.77   9271 15.70     63.4   1171 prof
purchasing.officers     11.42   8865  9.11     56.8   1175 prof
chemists                14.62   8403 11.68     73.5   2111 prof
physicists              15.64  11030  5.13     77.6   2113 prof

Ejemplos

  1. Gráfico relacionando la renta y la educación, incluyendo diagramas de caja en los ejes y regresión local (línea LOESS). Empleamos el formato fórmula y ~ x para indicar las variables a representar.
  2. scatterplot(education ~ income,
                data = Prestige,
                pch = 16,
                col = "darkblue",
                main = "Educación y Renta\n del conjunto de datos \"Prestige\"",
                xlab = "Renta (dollares)",
                ylab = "Educación (años)")
    
  3. Añadiendo elipses donde se concentran los datos
  4. scatterplot(prestige ~ income, data = Prestige, ellipse = TRUE)
    

  5. Representamos grupos siguiendo el formato y ~ x | z, en el que z evalúa como un factor otra variable pare dividir los datos en grupos.
  6. scatterplot(prestige ~ income|type, data = Prestige, legend.coords = "topleft")

  7. Etiquetar un número determinado de puntos.

  8. Por defecto id.n = 0, lo especificamos para indicar el número de puntos que deseamos etiquetar.
    scatterplot(infant.mortality ~ gdp, log = "xy", data = UN, id.n = 5)

  9. Etiquetar los datos interactivamente.

  10. Utilizamos el argumento id.method para etiquetar de la misma manera que hicimos con la función identify.

    scatterplot(infant.mortality ~ gdp, id.method = "identify", data = UN)

Entradas relacionadas

Referencias

2015-05-13

Etiquetar selectivamente los puntos de un diagrama de dispersión con ggplot2

Title

Problema

Tenemos un diagrama de dispersión.

qplot(dpi, sr, data = LifeCycleSavings)
Si etiquetáramos todos los puntos obtendríamos un gráfico con muchas de las etiquetas superpuestas.

qplot(dpi, sr, data = LifeCycleSavings, label = rownames(data))+
  geom_text(vjust = 1.5)

Solución

Opción 1

LifeCycleSavings$lab <- rownames(LifeCycleSavings)
newlab <- subset(LifeCycleSavings, lab %in% c("Canada", "Sweden", "United Kingdom", "United States", "Iceland", "Japan", "Spain", "Netherlands", "Switzerland", "Denmark"))
  1. lab, creamos una nueva columna con los nombres de las filas.
  2. newlab, subconjunto de las filas que deseamos etiquetar.
  3. Utilizamos lab dentro de aes y las nuevas, newlab, en geom_text.
  • qplot
qplot(dpi, sr, data = LifeCycleSavings, label = lab)+  
  geom_text(data = newlab , vjust = 1.5)
  • ggplot
ggplot(LifeCycleSavings, aes(x = dpi, y = sr, label = lab)) + 
  geom_point() + 
  geom_text(data = newlab , vjust = 1.5)
Opción 2

Name <- rownames(LifeCycleSavings)
idx <- Name %in% c("Canada", "Sweden", "United Kingdom", "United States", "Iceland", "Japan", "Spain", "Netherlands", "Switzerland", "Denmark") 
Name[!idx] <- NA
  1. Name, vector con los nombres de las etiquetas: nombres de las filas.
  2. idx, vector lógico (verdadero o falso) con TRUE para las etiquetas que deseamos conservar.
  3. Asignamos al vector Name el valor NA para aquellos nombres no presentes en el vector anterior.
  • qplot
qplot(dpi, sr, data = LifeCycleSavings, label = Name)+  
  geom_text(vjust = 1)
  • ggplot
p <- ggplot(LifeCycleSavings, aes(x = dpi, y = sr, label = Name))
p +  geom_point() + geom_text(vjust = 1.5)
Opción3

Con el paquete base graphics

plot(sr ~ dpi, 
     LifeCycleSavings, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')
text(LifeCycleSavings$dpi,
     LifeCycleSavings$sr,
     Name, pos = 1)

Referencias

2015-04-29

Etiquetar los puntos de un diagrama de dispersión con ggplot2

Title Anteriormente vimos cómo etiquetar los puntos de un diagrama de dispersión mediante la función text del paquete graphics. En esta entrada lo haremos como ggplot2.

Problema

Tenemos un diagrama de dispersión y deseamos etiquetar puntos. Para ganar en claridad seleccionaremos solamente los 10 primeros puntos.

data <- LifeCycleSavings[1:10, ]
qplot(dpi, sr, data = data)

Solución

Utilizamos la función geom_text para etiquetar los puntos del diagrama de dispersión.

  • qplot
qplot(dpi, sr, data = data, label = rownames(data))+  
  geom_text(vjust = 1.5)
  • ggplot
p <- ggplot(data, aes(x = dpi, y = sr, label = rownames(data)))
p +  geom_point() + geom_text(vjust = 1.5)

Notas

Con el argumento vjust cambiamos la posición de la etiqueta verticalmente. Por defecto encima del punto, lo aumentamos 1.5 para situarlo debajo. Con hjust se puede cambiar la posición de la etiqueta horizontalmente.

Referencias

2015-04-23

Añadir interactivamente las coordenadas a un diagrama de dispersión en R

Title

Problema

Tenemos un diagrama de dispersión y deseamos añadir interactivamente las coordinadas de los puntos.

plot(sr ~ dpi, 
     LifeCycleSavings, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')

Solución

Utilizamos la función identify para etiquetar interactivamente aquellos puntos que deseamos. Con la función paste encadenamos los elementos que deseamos añadir. En este caso el país y las coordenadas.

plot(sr ~ dpi, 
     LifeCycleSavings, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')
identify(LifeCycleSavings$dpi, 
         LifeCycleSavings$sr, 
         labels = paste(row.names(LifeCycleSavings),
                        ' (', LifeCycleSavings$dpi, 
                        ', ', LifeCycleSavings$sr, ')', 
                        sep = ''), 
         n = 3) 

Notas

Se trata de un ejemplo muy similar al que vimos en Etiquetar interactivamente un diagrama de dispersión. Con el argumento cex podríamos cambiar el tamaño de fuente. Con el argumento n establecemos el número máximo de puntos que deseamos identificar. Si no lo especificamos podremos etiquetar tantos puntos como deseemos. Para terminar el proceso y que muestre los puntos señalados hasta ese momento presionamos la tecla Esc. O bien presionamos el botón Finish en las pestaña Plot de RStudio.

Referencias

2015-04-13

Etiquetar interactivamente los puntos de un diagrama de dispersión en R

Title

Problema

Tenemos un diagrama de dispersión y deseamos etiquetar interactivamente algunos de los puntos.

plot(sr ~ dpi, 
     LifeCycleSavings, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')

Solución

Utilizamos la función identify para etiquetar interactivamente aquellos puntos que deseamos.

plot(sr ~ dpi, 
     LifeCycleSavings, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')
identify(LifeCycleSavings$dpi, 
         LifeCycleSavings$sr, 
         labels = row.names(LifeCycleSavings), 
         n = 5)
Tras ejecutar el código, hacemos clic sobre o cerca de los puntos que deseamos etiquetar.

Notas

Con el argumento cex podríamos cambiar el tamaño de fuente. Con el argumento n establecemos el número máximo de puntos que deseamos identificar. Si no lo especificamos podremos etiquetar tantos puntos como deseemos. Para terminar el proceso y que muestre los puntos señalados hasta ese momento presionamos la tecla Esc. O bien presionamos el botón Finish en las pestaña Plot de RStudio.

Referencias

2015-04-08

Etiquetar los puntos un diagrama de dispersión en R

Title

Problema

Tenemos un diagrama de dispersión y deseamos etiquetar puntos. Para ganar en claridad seleccionaremos solamente los 10 primeros puntos.

data <- LifeCycleSavings[1:10, ]
plot(sr ~ dpi, 
     data, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')

Solución

Utilizamos la función text para etiquetar los puntos del diagrama de dispersión.

data <- LifeCycleSavings[1:10, ]
plot(sr ~ dpi, 
     data, 
     xlab = 'Real Per-Capita Disposable Income', 
     ylab = 'Aggregate Personal Savings', 
     main = 'Intercountry Life-Cycle Savings Data')
labels <- rownames(data)
text(data$dpi, data$sr, labels, cex = 0.7, pos = 1)

Notas

Con el argumento cex cambiamos el tamaño de fuente. Por defecto es 1, 0.7 indica que lo reducimos un 70%. Con el argumento pos determinamos la posición de las etiquetas respecto al punto:

1 - Debajo
2 - Izquierda
3 - Derechas
4 - Encima

Referencias

Nube de datos