Fecha de la ultima revisión
## [1] "2024-04-15"
Los gráficos de línea se usan frecuentemente cuando hay una variable de datos continuos ordenada secuencialmente, como las series en tiempo (años, hora, minutos, u otras secuencias). En los ejemplos que veremos a continuación se muestra la relación entre la detección del cáncer de tiroides en EE. UU. entre los años 1975 y 2012, su aumento y el nivel de mortandad.
En la Figura se muestra el cambio en número de casos de cáncer de tiroides por cada 100,000 habitantes. La columna Year, año, es una variable numérica, y típicamente no se gráfica correctamente porque no se toma como numérica automáticamente. Es necesario identificarla como que contiene valores enteros usando la opción as.integer.
En primer lugar, crearemos un nuevo data.frame para agrupar solamente los nuevos casos de cáncer. Para crear un data.frame solamente con esos datos se usa la opción which, con el siguiente procedimiento:
subconjunto del_archivo[which( el_archivo$la_variable == “la variable de interés”),]
Note que la variable de interés es un conjunto de valores en “la_variable” o es una categoría, como en este caso, nuevos casos (o “New Cases”). El símbolo “==” significa “que sea exactamente igual a…”
Aquí vemos parte de los datos originales:
## Year Cases Rate
## 1 1975 New Cases 4.8
## 2 1976 New Cases 4.8
## 3 1977 New Cases 5.4
## 4 1978 New Cases 5.1
## 5 1979 New Cases 4.5
## 6 1980 New Cases 4.3
## 7 1981 New Cases 4.4
## 8 1982 New Cases 4.6
## 9 1983 New Cases 4.7
## 10 1984 New Cases 4.8
## 11 1985 New Cases 5.1
## 12 1986 New Cases 5.3
## 13 1987 New Cases 5.0
## 14 1988 New Cases 4.9
## 15 1989 New Cases 5.4
## 16 1990 New Cases 5.5
## 17 1991 New Cases 5.5
## 18 1992 New Cases 5.9
## 19 1993 New Cases 5.6
## 20 1994 New Cases 6.1
## 21 1995 New Cases 6.2
## 22 1996 New Cases 6.5
## 23 1997 New Cases 6.8
## 24 1998 New Cases 7.0
## 25 1999 New Cases 7.3
## 26 2000 New Cases 7.6
## 27 2001 New Cases 8.3
## 28 2002 New Cases 9.2
## 29 2003 New Cases 9.6
## 30 2004 New Cases 10.1
## 31 2005 New Cases 11.0
## 32 2006 New Cases 11.3
## 33 2007 New Cases 12.4
## 34 2008 New Cases 13.2
## 35 2009 New Cases 14.4
## 36 2010 New Cases 13.9
## 37 2011 New Cases 14.8
## 38 2012 New Cases 14.9
## 39 1975 Deaths_US 0.5
## 40 1976 Deaths_US 0.6
## 41 1977 Deaths_US 0.6
## 42 1978 Deaths_US 0.5
## 43 1979 Deaths_US 0.5
## 44 1980 Deaths_US 0.5
## 45 1981 Deaths_US 0.5
## 46 1982 Deaths_US 0.5
## 47 1983 Deaths_US 0.4
## 48 1984 Deaths_US 0.5
## 49 1985 Deaths_US 0.4
## 50 1986 Deaths_US 0.5
## 51 1987 Deaths_US 0.5
## 52 1988 Deaths_US 0.4
## 53 1989 Deaths_US 0.4
## 54 1990 Deaths_US 0.4
## 55 1991 Deaths_US 0.4
## 56 1992 Deaths_US 0.5
## 57 1993 Deaths_US 0.5
## 58 1994 Deaths_US 0.4
## 59 1995 Deaths_US 0.4
## 60 1996 Deaths_US 0.5
## 61 1997 Deaths_US 0.5
## 62 1998 Deaths_US 0.4
## 63 1999 Deaths_US 0.5
## 64 2000 Deaths_US 0.5
## 65 2001 Deaths_US 0.5
## 66 2002 Deaths_US 0.5
## 67 2003 Deaths_US 0.4
## 68 2004 Deaths_US 0.5
## 69 2005 Deaths_US 0.5
## 70 2006 Deaths_US 0.5
## 71 2007 Deaths_US 0.5
## 72 2008 Deaths_US 0.5
## 73 2009 Deaths_US 0.5
## 74 2010 Deaths_US 0.5
## 75 2011 Deaths_US 0.5
## 76 2012 Deaths_US 0.5
## [1] New Cases Deaths_US
## Levels: Deaths_US New Cases
Year | Cases | Rate |
---|---|---|
1975 | New Cases | 4.8 |
1976 | New Cases | 4.8 |
1977 | New Cases | 5.4 |
1978 | New Cases | 5.1 |
1979 | New Cases | 4.5 |
1980 | New Cases | 4.3 |
El procedimiento para preparar el gráfico de tiroides se presenta a continuación:
ggplot(subTiroide, aes(x=as.integer(Year), y=Rate))+
geom_line(size=1, colour="red")+
annotate("text", x= 1985,y= 9, size= 3,
label="Nuevos casos de \n cancer \n de Tiroides", color="black")+
guides(color="none")+
ylab("Números de nuevos casos\n de cancer de Tiroides \n por 100,000 habitantes")+
xlab("Años")+
theme(axis.title=element_text(size=8,face="italic"),
axis.title.y.left = element_text(size=10,face="bold"))
Note que se utilizó la función annonate para escribir información sobre el gráfico. Esta función será discutida con más detalle más adelante.
A veces es importante comparar dos o más secuencias de datos. Eso se mostrará en la Figura continuando con el mismo ejemplo de tiroides anterior pero esta vez se le añadirá la razón de mortandad por tiroidismo en EEUU en el mismo gráfico. Usando la función group= identifica cual son los grupos, si hubiese más de dos grupos hubiese una linea para cada grupo. Lo que se observa es que aunque hay mucha más gente que es diagnosticada con cáncer de la tiroides, la proporción de gente que muere de este tipo de cáncer es consistente a través del tiempo.
ggplot(Tiroide, aes(x=as.integer(Year),
y=Rate, group=Cases, color=Cases))+
geom_line(size=2)+
annotate("text", x= 1990,y= 8, size=4,
label="Nuevos casos")+
annotate("text", x= 2000,y= 1, size= 4,
label="Mortandad")+
guides(color="none")+
ylab("Números de nuevos casos\n por 100,000 habitantes")+
xlab("Años")+
theme(axis.title=element_text(size=10,face="bold"))
La función annonate nos permitió añadir la descripción Mortandad a la línea inferior en forma de texto text a la altura del punto 2000 en el eje de X y a la altura del punto 1 en el eje de Y. De igual manera se hizo con la descripción Nuevos Casos en la coordenada (1990, 8).
Muchas veces el intervalo de la escala de los ejes no es el óptimo. Continuando con el ejemplo anterior, modificamos el eje de X en la Figura para que incluya el último año (el último valor de la secuencia en el eje de X). Para ello se indica en el mismo código que el límite de X en el eje se vea a intervalos de 10 años con la función xlim. Note que para expandir el eje de Y se usaría la misma técnica.
## [1] New Cases Deaths_US
## Levels: Deaths_US New Cases
ggplot(Tiroide, aes(x=as.integer(Year), y=Rate,
group=Cases, color=Cases))+
geom_line(size=2)+
annotate("text", x= 1990,y= 10, size=4,
label="Nuevos casos")+
annotate("text", x= 1995,y= 1, size= 4,
label="Mortandad")+
scale_color_manual(values=c("New Cases"="orange", "Deaths_US"="pink")) +
guides(color="none")+
ylab("Razón")+
xlab("Años")+
xlim(min(Tiroide$Year-5), max(Tiroide$Year+6))+ # expandir los ejes
theme(axis.title=element_text(size=14,face="bold"))
A veces nos interesa que la línea muestre los puntos que la componen. En el próximo ejemplo, lo mostraremos nuevamente utilizando el ejemplo anterior de tiroides. A continuación el código modificado que muestra ese efecto añadiendo geom_point:
ggplot(Tiroide, aes(x=as.integer(Year), y=Rate,
group=Cases,
color=Cases))+
geom_line(size=1)+
annotate("text", x= 1990,y= 8, size=4,
label="Nuevos casos")+
annotate("text", x= 2000,y= 2, size=4,
label="Mortandad")+
guides(color="none")+
ylab("Razón")+
xlab("Años")+
geom_point(color="black", size=.5)+
theme(axis.title=element_text(size=10,face="bold"))
Los puntos son variados y representado por un número (0 al 24) o un símbolo. Por ejemplo para utilizar los puntos en una gráfica se usa la función
Para cambiar el estilo de los puntos en un gráfico de línea se usan los parámetros size, shape, color y fill. Como ya habrá notado, estas alternativas para modificar la apariencia de los gráficos son comunes en casi todos los tipos de gráficos en ggplot2. La forma shape de los puntos predeterminada es un círculo con tamaño de 2, size=2. La opción de fill (para rellenar el punto con un color específico) es aplicable solamente al parámetro shape con valor de 21 al 25.
Un punto importante que hay que observar es que si las líneas y los puntos son de diferentes colores, se tienen que especificar los puntos con geom_point después de la línea con geom_line ya que ggplot funciona con capas de información. En otras palabras, lo que se especifica primero, sale primero.
ggplot(Tiroide, aes(x=as.integer(Year), y=Rate,
group=Cases, color=Cases))+
geom_line(size=3)+
annotate("text", x= 1990, y= 10, label="Nuevos casos")+
annotate("text", x= 1990, y= 2, label="Mortandad")+
guides(color="none")+
ylab("Razón")+
xlab("Años")+
geom_point(shape=21, size=3, colour="blue", fill="yellow")+
theme(axis.title=element_text(size=10,face="bold"))
Nuevamente, si las líneas y los puntos son de diferentes colores, se tienen que especificar los puntos geom_point después de la función geom_line. Por ejemplo,se puede ver el resultado cuando geom_point se específica antes de la línea. Los puntos están debajo de la línea, lo que los hace difícil de apreciar. Recordemos entonces que el orden de las funciones puede tener un impacto muy importante en la producción de un gráfico.
ggplot(Tiroide, aes(x=as.integer(Year), y=Rate,
group=Cases, color=Cases))+
geom_point(shape=22, size=4, color="blue", fill="white")+
geom_line(size=3)+
guides(color="none")+
ylab("Razón")+
xlab("Años")+
scale_x_continuous(limits=c(2000, 2010))+
theme(axis.title=element_text(size=10,face="bold"))
Tarea
library(lubridate)
library(leaflet)
library(rinat)
library(gt)
library(tidyverse)
cajaPR <- c(17.75, -67.4, 18.75, -65.15)
bujo <- get_inat_obs(taxon_name = "Gymnasio nudipes",
quality = 'research',
geo = TRUE,
maxresults = 1000,
bounds = cajaPR)
gt(head(bujo))
scientific_name | datetime | description | place_guess | latitude | longitude | tag_list | common_name | url | image_url | user_login | id | species_guess | iconic_taxon_name | taxon_id | num_identification_agreements | num_identification_disagreements | observed_on_string | observed_on | time_observed_at | time_zone | positional_accuracy | public_positional_accuracy | geoprivacy | taxon_geoprivacy | coordinates_obscured | positioning_method | positioning_device | user_id | user_name | created_at | updated_at | quality_grade | license | sound_url | oauth_application_id | captive_cultivated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Gymnasio nudipes | 2024-02-17 20:58:00 -0400 | During the Wings trip. | Puerto Rico | 18.07076 | -66.90662 | Puerto Rican Owl | https://www.inaturalist.org/observations/200628698 | https://inaturalist-open-data.s3.amazonaws.com/photos/354007592/medium.jpeg | sandykeller | 200628698 | Puerto Rican Owl | Aves | 1289585 | 1 | 0 | 2024/02/17 8:58 PM | 2024-02-17 | 2024-02-18 00:58:00 UTC | Puerto Rico | NA | 30683 | obscured | open | true | 712253 | Sandra Keller | 2024-02-27 16:30:18 UTC | 2024-02-27 16:37:55 UTC | research | CC-BY | NA | false | ||||
Gymnasio nudipes | 2024-02-18 23:14:00 -0400 | Mameyes II, Río Grande 00745, Puerto Rico | 18.39319 | -65.76250 | Puerto Rican Owl | https://www.inaturalist.org/observations/200533079 | https://inaturalist-open-data.s3.amazonaws.com/photos/353823715/medium.jpg | accipitergentilis | 200533079 | Puerto Rican Owl | Aves | 1289585 | 4 | 0 | 2024/02/18 11:14 PM | 2024-02-18 | 2024-02-19 03:14:00 UTC | Puerto Rico | 15 | 15 | open | false | 3038372 | Jonathan Irons | 2024-02-26 17:57:32 UTC | 2024-02-28 01:33:24 UTC | research | CC-BY-NC | NA | false | ||||||
Gymnasio nudipes | 2024-01-30 21:08:41 -0400 | Puerto Rico, Maricao, Puerto Rico, US | 18.17895 | -66.99299 | Puerto Rican Owl | https://www.inaturalist.org/observations/198700376 | https://inaturalist-open-data.s3.amazonaws.com/photos/350274405/medium.jpg | ndpederson | 198700376 | Puerto Rican Owl | Aves | 1289585 | 1 | 0 | 2024-01-30 18:08:41-07:00 | 2024-01-30 | 2024-01-31 01:08:41 UTC | Puerto Rico | 34 | 34 | open | false | 518898 | Nick Pederson | 2024-02-08 03:44:35 UTC | 2024-02-08 04:51:12 UTC | research | CC-BY-NC | 3 | false | ||||||
Gymnasio nudipes | 2024-01-14 00:00:00 -0400 | Jiménez, Río Grande 00745, Puerto Rico | 18.33784 | -65.82677 | Puerto Rican Owl | https://www.inaturalist.org/observations/197223742 | liam_pentangelo | 197223742 | Puerto Rican Owl | Aves | 1289585 | 1 | 0 | 2024-01-14 | 2024-01-14 | Puerto Rico | 8 | 8 | open | false | 1928743 | Liam Pentangelo | 2024-01-21 13:47:53 UTC | 2024-01-23 05:15:49 UTC | research | CC-BY-NC | https://static.inaturalist.org/sounds/881372.m4a?1705969185 | NA | false | |||||||
Gymnasio nudipes | 2024-01-20 23:42:57 -0400 | Puerto Rico, Yabucoa, Puerto Rico, US | 18.04126 | -65.87785 | Puerto Rican Owl | https://www.inaturalist.org/observations/197195317 | angel_d_vega | 197195317 | Múcaro común | Aves | 1289585 | 1 | 0 | 2024-01-20 23:42:57-04:00 | 2024-01-20 | 2024-01-21 03:42:57 UTC | Puerto Rico | 35 | 35 | open | false | 2777441 | Angel D Vega | 2024-01-21 03:44:11 UTC | 2024-01-24 04:22:17 UTC | research | CC-BY-NC | https://static.inaturalist.org/sounds/880285.m4a?1705808653 | 3 | false | ||||||
Gymnasio nudipes | 2023-09-28 18:11:00 -0400 | Rehabilitado por (CCMPR) y liberado | Río Piedras, San Juan, Puerto Rico | 18.39147 | -66.05756 | Puerto Rican Owl | https://www.inaturalist.org/observations/197058166 | https://inaturalist-open-data.s3.amazonaws.com/photos/346977433/medium.jpg | antoniobulnes | 197058166 | Puerto Rican Owl | Aves | 1289585 | 2 | 0 | 2023/09/28 6:11 PM | 2023-09-28 | 2023-09-28 22:11:00 UTC | Puerto Rico | 3 | 3 | open | false | 7163670 | 2024-01-19 12:53:43 UTC | 2024-01-19 18:25:37 UTC | research | CC-BY-NC | NA | false |
library(lubridate)
#bujo$date=ymd_hms(bujo$datetime)
#bujo$Year=format(date, format="%Y")
bujo$date=ymd_hms(bujo$datetime)
bujo$Year=format(as.POSIXct(bujo$date), format="%Y")
gt(head(bujo, n=3))
scientific_name | datetime | description | place_guess | latitude | longitude | tag_list | common_name | url | image_url | user_login | id | species_guess | iconic_taxon_name | taxon_id | num_identification_agreements | num_identification_disagreements | observed_on_string | observed_on | time_observed_at | time_zone | positional_accuracy | public_positional_accuracy | geoprivacy | taxon_geoprivacy | coordinates_obscured | positioning_method | positioning_device | user_id | user_name | created_at | updated_at | quality_grade | license | sound_url | oauth_application_id | captive_cultivated | date | Year |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Gymnasio nudipes | 2024-02-17 20:58:00 -0400 | During the Wings trip. | Puerto Rico | 18.07076 | -66.90662 | Puerto Rican Owl | https://www.inaturalist.org/observations/200628698 | https://inaturalist-open-data.s3.amazonaws.com/photos/354007592/medium.jpeg | sandykeller | 200628698 | Puerto Rican Owl | Aves | 1289585 | 1 | 0 | 2024/02/17 8:58 PM | 2024-02-17 | 2024-02-18 00:58:00 UTC | Puerto Rico | NA | 30683 | obscured | open | true | 712253 | Sandra Keller | 2024-02-27 16:30:18 UTC | 2024-02-27 16:37:55 UTC | research | CC-BY | NA | false | 2024-02-18 00:58:00 | 2024 | ||||
Gymnasio nudipes | 2024-02-18 23:14:00 -0400 | Mameyes II, Río Grande 00745, Puerto Rico | 18.39319 | -65.76250 | Puerto Rican Owl | https://www.inaturalist.org/observations/200533079 | https://inaturalist-open-data.s3.amazonaws.com/photos/353823715/medium.jpg | accipitergentilis | 200533079 | Puerto Rican Owl | Aves | 1289585 | 4 | 0 | 2024/02/18 11:14 PM | 2024-02-18 | 2024-02-19 03:14:00 UTC | Puerto Rico | 15 | 15 | open | false | 3038372 | Jonathan Irons | 2024-02-26 17:57:32 UTC | 2024-02-28 01:33:24 UTC | research | CC-BY-NC | NA | false | 2024-02-19 03:14:00 | 2024 | ||||||
Gymnasio nudipes | 2024-01-30 21:08:41 -0400 | Puerto Rico, Maricao, Puerto Rico, US | 18.17895 | -66.99299 | Puerto Rican Owl | https://www.inaturalist.org/observations/198700376 | https://inaturalist-open-data.s3.amazonaws.com/photos/350274405/medium.jpg | ndpederson | 198700376 | Puerto Rican Owl | Aves | 1289585 | 1 | 0 | 2024-01-30 18:08:41-07:00 | 2024-01-30 | 2024-01-31 01:08:41 UTC | Puerto Rico | 34 | 34 | open | false | 518898 | Nick Pederson | 2024-02-08 03:44:35 UTC | 2024-02-08 04:51:12 UTC | research | CC-BY-NC | 3 | false | 2024-01-31 01:08:41 | 2024 |
## # A tibble: 11 × 2
## Year n
## <chr> <int>
## 1 2007 1
## 2 2009 2
## 3 2013 1
## 4 2016 4
## 5 2017 2
## 6 2019 1
## 7 2020 2
## 8 2021 14
## 9 2022 27
## 10 2023 23
## 11 2024 10
ggplot(el archivo de datos, aes(la variables continua))
geom_line(alpha, color, group, fill, size, linetype)