2017-06-15 44 views
2

我繪製了五個圖形和一個圖例。圖表工作得很好,但legens消失沒有錯誤。 My preview in RStudio looks like this在R中繪製時,圖例會令人失望

當我放大時,圖例應該是空白的區域。我使用下面的代碼:

opar <- par (no.readonly = TRUE) 
par (mfrow = c(3, 2)) 

library(deSolve) 

# Plot A 
LotVmod <- function (Time, State, Pars) { 
    with(as.list(c(State, Pars)), { 
     dx = (b*x) - (b*x*x/K) - (y*(x^k/(x^k+C^k)*(l*x/(1+l*h*x)))) 
     dy = (y*e*(x^k/(x^k+C^k)*(l*x/(1+l*h*x)))) - (m*y) 
     return(list(c(dx, dy))) 
    }) 
} 

Pars <- c(b = 1.080, e = 2.200, K = 130.000, k = 20.000, l = 2.000, 
      h = 0.030, C = 2.900, m = 0.050) 

State <- c(x = 0.25, y = 2.75) 
Time <- seq(1, 9, by = 1) 

out <- as.data.frame(ode(func = LotVmod, y = State, parms = Pars, times = Time)) 

matplot(out[,-1], type = "l", xlim = c(1, 9), ylim = c(0, 45), 
     xlab = "time", 
     ylab = "population", 
     main = "Compartment A") 
mtext ("Coefficient of Variance 4.96", cex = 0.8) 

x <- c(# Validation data) 
y <- c(# Validation data) 

lines (Time, x, type="l", lty=1, lwd=2.5, col="black") 
lines (Time, y, type="l", lty=1, lwd=2.5, col="red") 

# Legend 
plot.new() 
legend("center", c(expression (italic ("F. occidentalis")*" observed"), 
        expression (italic ("M. pygmaeus")*" observed"), 
        expression (italic ("F. occidentalis")*" simulated"), 
        expression (italic ("M. pygmaeus")*" simulated")), 
     lty = c(1, 1, 1, 2), 
     col = c(1, 2, 1, 2), 
     lwd = c(2.5, 2.5, 1, 1), 
     box.lwd = 0, bty = "n") 

# Plot C to F = same as A 

par(opar) 

我的輸出不會給出錯誤。我之前使用了完全相同的代碼,沒有任何問題,因此我重新啓動了R,刪除了所有對象,清除了所有圖並重新啓動了RStudio和我的計算機。

回答

2

嘗試在您的圖例說明中添加xpd=TRUE。即

legend("center", c(expression (italic ("F. occidentalis")*" observed"), 
        expression (italic ("M. pygmaeus")*" observed"), 
        expression (italic ("F. occidentalis")*" simulated"), 
        expression (italic ("M. pygmaeus")*" simulated")), 
     lty = c(1, 1, 1, 2), 
     col = c(1, 2, 1, 2), 
     lwd = c(2.5, 2.5, 1, 1), 
     box.lwd = 0, bty = "n", xpd=TRUE) 

默認情況下,圖例被繪圖區域切斷。這xpd參數使繪圖區域外繪製。見例如?par更多關於xpd

+1

將其設置爲「TRUE」將是一個更好的主意。 –

+0

@JorisMeys確實如此。我沒記錯。現在更新。 –

2

這是由於劇情畫布的設置以及該設備的縮放比例。您做這件事的方式是,在右上方的繪圖的繪圖區域添加圖例。繪圖區域不是完整的設備,而只是由軸形成的空間內的部分。如果重新縮放,那麼繪圖區域也將重新縮放。儘管如此,繪圖區域周圍的邊距不會改變大小,因此放大會使您的繪圖區域變得很小以至於不再適合圖例。它隱藏在繪圖區周圍的邊緣。

因此,AEBilgrau非常正確,您需要添加xpd = TRUE。這允許圖例延伸到繪圖區域之外,因此在調整繪圖設備的大小時它不會消失在邊緣之後。