geom_vline中的线型不正确,r ggplot2中有图例

时间:2014-09-14 15:11:10

标签: r ggplot2 legend

我试图将xvar中位数显示为虚线&在传奇中展示它。这是我的代码:

require(ggplot2)
require(scales)

medians_mtcars <- data.frame("wt.median"=median(mtcars$wt))

# legend shows but linetype is wrong (solid)
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + geom_vline(aes(xintercept=wt.median, linetype="dotted"),
                    data=medians_mtcars, show_guide=TRUE)
p

我也尝试过:

# linetype is correct but legend does not show
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + geom_vline(aes(xintercept=wt.median),
                    data=medians_mtcars, show_guide=TRUE, linetype="dotted")
p

本来希望发布情节图像,但还没有超过声誉阈值。

此论坛上有2篇其他帖子接近此主题,但未提供此问题的解决方案: Add vline to existing plot and have it appear in ggplot2 legend? ; Incorrect linetype in legend, ggplot2 in R

我正在使用ggplot2版本1.0.0

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您需要在图例中显示线型并更改它,那么在aes()内您只需为该线型写入名称(因为您只有一行),然后使用scale_linetype_manual()更改线型。< / p>

ggplot(mtcars, aes(wt, mpg)) + 
      geom_point() + 
      geom_vline(aes(xintercept=wt.median, linetype="media"),
                    data=medians_mtcars, show_guide=TRUE)+
      scale_linetype_manual(values="dotted")

如果您真的想在aes()中输入线型并获得正确的图例,那么您应该使用带有参数scale_linetype_identity()的{​​{1}}。

guide="legend"