2016-11-14 106 views
0

我想繪製一個數據集,其中點的大小與x變量成比例並具有95%預測間隔的迴歸線。我寫的「樣本」,代碼如下:如何在R中添加ggplot2中的自定義圖例

# Create random data and run regression 
    x <- rnorm(40) 
    y <- 0.5 * x + rnorm(40) 
    plot.dta <- data.frame(y, x) 
    mod <- lm(y ~ x, data = plot.dta) 

    # Create values for prediction interval 
    x.new <- data.frame(x = seq(-2.5, 2.5, length = 1000)) 
    pred <- predict(mod,, newdata = x.new, interval = "prediction") 
    pred <- data.frame(cbind(x.new, pred)) 

    # plot the data w/ regression line and prediction interval 

    p <- ggplot(pred, aes(x = x, y = upr)) + 
    geom_line(aes(y = lwr), color = "#666666", linetype = "dashed") + 
    geom_line(aes(y = upr), color = "#666666", linetype = "dashed") + 
    geom_line(aes(y = fit)) + 
    geom_point(data = plot.dta, aes(y = y, size = x)) 
    p 

這將產生以下情節:
Plot produced by ggplot

顯然,傳說是沒有太大的幫助在這裏。我想在圖例中有一個條目標記爲「數據」,一條灰色,標有「95%PI」的虛線和一條標有「迴歸線」的黑色條目。

+1

的[添加傳說GGPLOT2線圖](http://stackoverflow.com/questions/10349206/add-legend-to-ggplot2-line-plot) –

+0

HTTP可能的複製.ORG /電流/ scale_size.html –

回答

2

由於在提供的鏈接中暗示了Hack-R,您可以設置scale_size()的中斷和標籤以使該圖例更有意義。

您還可以通過在您的aes()中添加線型並使用scale_linetype_manual()設置值,中斷和標籤來爲所有geom_line()呼叫構建圖例。 //docs.ggplot2:

ggplot(pred, aes(x = x, y = upr)) + 
    geom_line(aes(y = lwr, linetype = "dashed"), color = "#666666") + 
    geom_line(aes(y = upr, linetype = "dashed"), color = "#666666") + 
    geom_line(aes(y = fit, linetype = "solid")) + 
    geom_point(data = plot.dta, aes(y = y, size = x)) + 
    scale_size(labels = c("Eensy-weensy", "Teeny", "Small", "Medium", "Large")) + 
    scale_linetype_manual(values = c("dashed" = 2, "solid" = 1), labels = c("95% PI", "Regression Line")) 
相關問題