我有点困惑如何从单个数据而不是一组数据组中绘制图例。知道如何在右上角建立和添加一个美丽的传奇吗?
ano=c(1986, 1990, 1994, 1998, 2002, 2006, 2010)
reapresentacao = c(.66, .70, .72, .75, .78, NA, NA)
retencao = c(.39, .42, .50, .51, .50, NA,NA)
insucesso = c(.49, .50, .48, .50, .60, NA , NA)
institucionalizacao <- data.frame(ano, retencao, reapresentacao,insucesso)
p <-qplot(xlab="Eleições", ylab="Taxa de reapresentação, \n retenção e insucesso")
p <- p + geom_point(aes(x=institucionalizacao$ano, y=institucionalizacao$retencao), size = I(8), colour = "grey10")
p <- p + geom_line(aes(x=institucionalizacao$ano, y=institucionalizacao$retencao), size = I(5), colour = "grey10")
p <- p + geom_point(aes(x=institucionalizacao$ano, y=institucionalizacao$reapresentacao), size = I(8), colour = "grey45")
p <- p + geom_line(aes(x=institucionalizacao$ano, y=institucionalizacao$reapresentacao), size = I(5), colour = "grey45")
p <- p + geom_point(aes(x=institucionalizacao$ano, y=institucionalizacao$insucesso), size = I(8), colour = "grey75")
p <- p + geom_line(aes(x=institucionalizacao$ano, y=institucionalizacao$insucesso), size = I(5), colour = "grey75")
p <- p + theme_minimal(base_size = 18, base_family = "")
p <- p + scale_y_continuous(limits=RangeY, breaks=YBreaks, labels=YTickLabels, expand=c(0,0))
p <- p + scale_x_continuous(breaks = round(seq(min(institucionalizacao$ano), max(institucionalizacao$ano), by = 4),1))
print(p)
答案 0 :(得分:1)
从我可以从其他答案中收集类似问题(例如this one...)你需要在aes()中分配颜色,但你还需要链接到数据框。我实现您要求的方式是使用melt
包中的reshape2
重塑您的数据框。这样,您可以将您在跟踪给定年份的年份中跟踪的三个不同变量。
library(ggplot2)
library(reshape2)
ano=c(1986, 1990, 1994, 1998, 2002, 2006, 2010)
reapresentacao = c(.66, .70, .72, .75, .78, NA, NA)
retencao = c(.39, .42, .50, .51, .50, NA,NA)
insucesso = c(.49, .50, .48, .50, .60, NA , NA)
group = c("reapresentacao","retencao","insucesso")
institucionalizacao <- data.frame(ano, retencao, reapresentacao,insucesso,)
# Using the reshape2 package you can reorganize your dataframe so that you can organiz
newdf = melt(institucionalizacao, id = c("ano"), measure.vars = c("reapresentacao","retencao","insucesso"),
variable.name = "group", value.name = "value")
现在,您可以使用新数据框的结构,以便更轻松地绘制数据。 ggplot
会自动分配颜色,然后您可以使用scale_color_manual
进行个性化设置。
p <- ggplot() +
geom_point(data = newdf, aes(x=ano, y=value, colour = variable ), size = I(3)) +
geom_line(data = newdf, aes(x=ano, y=value, colour = variable), size = I(1)) +
labs(list(x="Eleições",y="Taxa")) +
theme_minimal(base_size = 12, base_family = "")
p
通过为组名指定颜色并标记图例,手动更改比例的颜色。
p + scale_color_manual(name ="Change group name",
values=c("retencao"= "grey10",
"reapresentacao"= "grey45",
"insucesso"= "grey75"))