使用ggplot2在图例中显示的线型不正确

时间:2017-08-21 18:39:58

标签: r ggplot2

我关注此链接example,因为我有类似的情况,我试图在同一个图中绘制两个数据框。我只对更改其中一个数据框的线型感兴趣,这些数据框在图表中有效,但在图例中没有正确显示。

示例数据集:

var DataSet = (function () {
   function DataSet(data) {
       this.data = data;
   }
   DataSet.prototype.add = function (newData) {
       if (newData === badData) {
           console.log('bad data!');
           return;
       }
       data.push(newData);
   };
   return DataSet;
}());

代码:

set.seed(456)
n <- 20
dfr <- data.frame(
  id=rep(1:n, 2),
  group=rep(c("1","2"), each=n), value=c(rnorm(n), rnorm(n, sd=1.1))
)

df_95ci <- data.frame(y_values=c(-1,1)*qnorm(0.95)) 
df_99ci <- data.frame(y_values=c(-1,1)*qnorm(0.99))

require(ggplot2)

Output

正如您所看到的,我有两条线条具有不同的线型,但它们在图例中相同。

1 个答案:

答案 0 :(得分:1)

你想要这个吗?

ggplot(data=dfr, mapping=aes(x=id, y=value)) +
    geom_line(mapping=aes(colour=group)) +
    geom_hline(data= df_95ci, mapping=aes(yintercept=y_values, linetype= "95% CI"), 
               colour = "orange", size = 1) +
    geom_hline(data= df_99ci, mapping=aes(yintercept=y_values, linetype= "99% CI"), 
               colour = "darkred", size = 1) +
    scale_linetype_manual(
        "CI horizontal line", values=c("95% CI" = 4, "99% CI" = 3),
        guide=guide_legend(override.aes = list(colour=c("orange", "darkred")))
    )

enter image description here