【发布时间】:2019-04-22 22:15:32
【问题描述】:
我想遍历六个相似的数据框并使用 ggplot 打印出六个图。
我的代码在我单独运行绘图时有效,但我无法使用 for 循环让 ggplot 运行六次。我的六个数据框是 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)
}
【问题讨论】: