I want to run through six similar dataframes and print out six plots using ggplot.
My code works when I run the plots separately but I can't get ggplot to run six times using a for loop. My six dataframes are the six animals listed in gg_pets.
cat <- data.frame(Breed = c("American Shorthair","Ragdoll","Persian","Sphynx","Maine Coon"),
Longevity = c("17","19","15","17","20"))
dog <- data.frame(Breed = c("Havanese","Bulldog","Beagle","Chihuahua","Poodle"),
Longevity = c("20","11","12","15","16"))
#etc for types of birds, fish, snakes, and ferrets
#the following works
plot <- ggplot(data = cat, aes(x = Breed, y = Longevity, fill = Breed)) +
geom_bar(stat = "identity", position = position_dodge()) +
xlab("Breed") +
ylab("Longevity") +
ggtitle("cat") +
geom_text(aes(label = Longevity), vjust = -0.3, color = "black", size = 3.5) +
theme(axis.line = element_line(color = "black"), axis.text = element_text(color = "black"),
legend.position = "none", plot.title = element_text(hjust = .5),
panel.grid.minor = element_blank(), panel.grid.major = element_blank(),
panel.border = element_rect(color = "black", fill = NA, size = 0.8),
panel.background = element_rect(fill = NA), text = element_text(size=10))
print(plot)
gg_pets <- c("cat","dog","bird","fish","snake","ferret")
#the following does not work
for (i in 1:length(gg_pets)){
plot <- ggplot(data = [i], aes(x = Breed, y = Longevity, fill = Breed)) +
geom_bar(stat = "identity", position = position_dodge()) +
xlab("Breed") +
ylab("Longevity") +
ggtitle([i]) +
geom_text(aes(label = Longevity), vjust = -0.3, color = "black", size = 3.5) +
theme(axis.line = element_line(color = "black"), axis.text = element_text(color = "black"),
legend.position = "none", plot.title = element_text(hjust = .5),
panel.grid.minor = element_blank(), panel.grid.major = element_blank(),
panel.border = element_rect(color = "black", fill = NA, size = 0.8),
panel.background = element_rect(fill = NA), text = element_text(size=10))
print(plot)
}