Легенда разочаровывает при построении графика в R
Я построил пять графиков и легенду. Графики работают просто отлично, однако legens исчезает без ошибки.
мой предварительный просмотр в RStudio выглядит так
Когда я увеличиваю масштаб, область, где должна быть легенда, пуста.
Я использую следующий код:
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.
Это связано с тем, как настроен холст графика и как работает масштабирование этого устройства. Таким образом, вы добавляете легенду в область построения верхнего правого участка. Однако область построения графика - это не полное устройство, а только часть внутри пространства, образованного осями. Если вы масштабируете, эта область построения также будет масштабироваться. Поля вокруг области построения не изменяют размер, поэтому масштабирование делает область построения настолько маленькой, что она не вписывается в легенду. длиннее. Он скрыт полями вокруг области построения графика.
По этой причине AEBilgrau очень прав, вам нужно добавить
xpd = TRUE. Это позволяет легенде выходить за пределы области построения, поэтому она не исчезает за полями при изменении размера устройства построения.
Comments