我想在下面的ggplot中调整线型。因此,我在data.frame df中引入另一列来表示线型,但是一旦我将其转换为因子,线型而不是“方法”出现在图例中...(参见试验3)。
如何在图例中获得“方法”?最后我希望能够
以下是我的尝试:
require(ggplot2)
set.seed(1)
df <- data.frame(x=c(1:4, 2:5),
method=rep(c("a", "b"), each=4),
lt=rep(c(5,3), each=4),
value=rep(c(0,1), each=4)+runif(8))
## trial 1:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=method))
# fine, but not the linetypes I would like to have
## trial 2:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=lt))
# correct linetypes, but no legend
## trial 3:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=as.factor(lt)))
# legend, but not the correct one (I would like to have the "group"ing
# variable "method" in the legend as in trial 1)
答案 0 :(得分:16)
使用method
作为linetype
,但随后手动将其映射到您想要的行类型。您不需要以这种方式引入另一个变量。
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(linetype=method)) +
scale_linetype_manual(breaks=c("a","b"), values=c(5,3))