I have this data:
structure(list(Municipio = c("Territorio1", "Territorio1", "Territorio1",
"Territorio1", "Territorio1", "Territorio1", "Territorio1", "Territorio1",
"Territorio1", "Territorio1", "Territorio1", "Territorio1", "Territorio1",
"Territorio1", "Territorio1", "Territorio1", "Territorio1", "Territorio1",
"Territorio1", "Territorio1", "Territorio1", "Territorio2", "Territorio2",
"Territorio2", "Territorio2", "Territorio2", "Territorio2", "Territorio2",
"Territorio2", "Territorio2", "Territorio2", "Territorio2", "Territorio2",
"Territorio2", "Territorio2", "Territorio2", "Territorio2", "Territorio2",
"Territorio2", "Territorio2", "Territorio2", "Territorio2", "Territorio3",
"Territorio3", "Territorio3", "Territorio3", "Territorio3", "Territorio3",
"Territorio3", "Territorio3", "Territorio3", "Territorio3", "Territorio3",
"Territorio3", "Territorio3", "Territorio3", "Territorio3", "Territorio3",
"Territorio3", "Territorio3", "Territorio3", "Territorio3", "Territorio3"
),
Año = c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
2020, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020),
Población = c(1958, 1968, 1981, 1970, 1982, 1993, 2010,
2060, 2124, 2124, 2181, 2165, 2165, 2166, 2149, 2114, 2073,
2047, 2026, 2020, 2035, 2014, 2030, 2009, 1984, 1974, 1937,
1890, 1887, 1891, 1894, 1863, 1859, 1858, 1843, 1832, 1820,
1811, 1781, 1746, 1723, 1706, 1820, 1840, 1833, 2029, 2157,
2231, 2351, 2586, 2798, 2881, 2898, 2971, 2987, 3084, 3089,
3110, 3135, 3137, 3193, 3197, 3201)), row.names = c(NA, -63L
), class = c("tbl_df", "tbl", "data.frame"))-> datos
I want to make a loop that takes me a graph by territory:
unique(datos$Municipio)-> titulo
for(i in 1:3) {
titulo[i]->titulo2
nombre=paste0(titulo2,".png")
png(filename = nombre, width = 800, height = 600)
datos[datos$Municipio==titulo2,]-> df1
min(df1$Población)-> min
max(df1$Población)-> max
ggplot(df1, aes(x = Año, y = Población)) +
geom_line()+labs(title = titulo2)+
theme(plot.title = element_text(hjust = 0.5))+
scale_y_continuous(limits = c(min, max+(max*0.02)))
dev.off()
}
But nothing comes out.
The only thing missing from your code is to explicitly call a
print
of the graph:In any case, I suggest a more consistent way with the universe
tidyverse
, particularly there is a batch to generate the graph that includes the configuration of the variablesmax_val
andmin_val
(Note: it is not good to use a function as a variable name) and finally we useggsave()
with the newly generated graph.Note:
ggsave()
it is the official way to save the graphicsggplot()
but it is not compatible with the normal flow of a batchtidy
so yes or yes it has to be executed outside the "batch".