【发布时间】:2018-10-24 03:57:08
【问题描述】:
我正在尝试为使用 ggplot 创建的折线图生成图例。从我一直在阅读的内容来看,应该自动制作图例,因为我已经改变了图形的美学并将线型包含在 aes 函数中,但它是不可见的。我一直在网上搜索这个确切问题的答案,并尝试了很多方法,但似乎没有任何效果。我想我错过了一些非常小的东西。我尝试使用 scale_linetype_manual 但这并没有产生图例。任何帮助将不胜感激。
jpeg(filename = "careercurve.jpeg", width = 12, height = 10, units = "cm", res = 1200)
ggplot() +
scale_y_continuous(limits = c(0.5,0.8))+
geom_line(aes(x = Age, y = fwd.preds), data = fwd.predictions, linetype = 1) +
geom_line(aes(x = Age, y = def.preds), data = def.predictions, linetype = 2) +
geom_line(aes(x = Age, y = mid.preds), data = mid.predictions, linetype = 3) +
geom_line(aes(x = Age, y = ruck.preds), data = ruck.predictions, linetype = 4) +
theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), axis.text = element_text(colour = "black", size = 8), axis.title = element_text(size = 8), legend.position = "bottom")+
labs(x = "Age (years)", y = "AFL Player Rank/min (au)") +
geom_text(aes(x = 35.4, y = 0.535, label = "Fwd"), size = 3) +
geom_text(aes(x = 35.4, y = 0.50, label = "Def"), size = 3) +
geom_text(aes(x = 35.4, y = 0.575, label = "Mid"), size = 3) +
geom_text(aes(x = 35.4, y = 0.67, label = "Ruck"), size = 3)
dev.off()
【问题讨论】:
-
ggplot 如果您提供长(又名“整洁”)数据并将数据的不同方面映射到不同的美学,它将为您完成更多工作(包括图例)。因此,不要像这里那样指定
preds的四个系列,我建议使用tidyr::gather(type, value, fwd.preds:ruck:preds)之类的东西来使您的数据变长,然后用一个替换四个geom_line 调用,例如geom_line(aes(x = Age, color = type)...
标签: r ggplot2 legend linegraph