线型的传说

时间:2014-11-10 07:23:24

标签: r ggplot2

我正在尝试制作一个箱形图,并为其添加一个图例:

boxplot(mpg~factor(gear),data=mtcars,par(las=2),range=0,col=rainbow(3))
abline(h=median(mtcars$mpg),lty=3)
abline(h=25,lty=6)
legend("bottomright",c("Median mileage","Mileage@25"),lty=c(3,6))

但是,我无法订购x轴刻度。如果我想将订单更改为4-3-5,我该怎么办?你能用ggplot2展示如何做到这一点吗?我用ggplot2进行了试验:

bp <- ggplot(mtcars,aes(x=gear,y=mpg))
order <- c(4,3,5)
bp+geom_boxplot(aes(colour=gear))+scale_x_discrete(limits=order)+geom_hline(yintercept=median(mtcars$mpg),linetype=2)+geom_hline(yintercept=25,linetype=8)

在这种情况下,我无法添加线型图例,但是我可以更改x轴标签的顺序。

1 个答案:

答案 0 :(得分:0)

如果您想订购箱图并拥有离散变量,则需要转换为因子:

library(ggplot2)
ord <- c(4,3,5)
md.mpg <- median(mtcars$mpg)
bp <- ggplot(mtcars,aes(x = as.factor(gear), y = mpg))
bp+geom_boxplot(aes(colour = as.factor(gear))) +
  scale_x_discrete(limits = as.factor(ord)) +
  geom_hline(yintercept = md.mpg, linetype = 2) +
  annotate("text", x = -Inf, y = md.mpg, label = sprintf("md = %.1f", md.mpg), vjust = -1.2, hjust = -0.2) +
  geom_hline(yintercept = 25,linetype = 8) +
  annotate("text", x = -Inf, y = 25, label = "value = 25", vjust = -1.2, hjust = -0.2)

在上面的示例中,您没有不同的线型,至少没有任何线型映射到数据,那么您要寻找什么样的图例?