2011-08-22 35 views
29

¿Por qué sucede esto?plot.new no ha sido llamado todavía

plot(x,y) 
yx.lm <- lm(y ~ x) 
lines(x, predict(yx.lm), col="red") 

error en plot.xy(xy.coords(x, y), type = type, ...): plot.new no se ha llamado todavía

+1

trabaja aquí cuando se aplica a dos vectores cortos. Por favor muéstranos 'str (x)' y 'str (y)'. – NPE

+3

¿Cómo esperas que comencemos con detalles? No tenemos 'x',' y', ni el código utilizado para ajustarse al modelo lineal. Por favor ayudanos a ayudarte. –

Respuesta

23

alguna acción, muy posiblemente no esté representado en el código visible, ha cerrado el dispositivo de pantalla interactiva. Se puede hacer con un "clic" en un botón de cierre. (También podría hacerse mediante un dev.off() adicional al trazar a un dispositivo de gráficos de archivos. Esto puede suceder si pega un comando de trazado de líneas múltiples que tiene un dev, off() al final pero errores en la apertura del dispositivo externo pero luego tiene hte dev.off() en una línea separada por lo que accidentalmente cierra el dispositivo interactivo).

Algunas (¿la mayoría?) Implementaciones R iniciarán un dispositivo de gráficos de pantalla abierto automáticamente, pero si lo cierra, necesita reiniciarlo. En Windows que podría ser window(); en una Mac, quartz(); y en una caja de linux, x11(). También es posible que deba emitir un comando plot.new(). Solo sigo las ordenes Cuando recibo ese error, publico plot.new() y si no veo una ventana de diagrama, también publico quartz(). Luego empiezo de nuevo desde el principio con un nuevo comando plot(., ., ...) y cualquier adición adicional a esa imagen de pantalla de trazado.

+6

Esta respuesta es similar al consejo "en caso de duda, reformatee su disco duro". No es necesario agregar llamadas de plot.new() no deseadas. El OP (obviamente) omitió su llamada a lm(), y lo más probable es que alguna otra llamada que se cerró sea ventana de diagrama. plot.new() no se "volverá a conectar" a la gráfica existente de x vs y, por lo que su llamada a lines() no se escribirá en esa gráfica. –

+0

Si en el peor de los casos es inofensivo, entonces no es similar a su ejemplo ni siquiera es similar a rm (list = ls()). –

+0

No siempre es inofensivo. Y como señalé, plot (x, y); plot.new(); lines (...) * no * harán lo que el OP quería –

1

Tuve el mismo problema ... mi problema era que estaba cerrando mi ventana de cuarzo después de la trama (x, y). Una vez que lo mantuve abierto, las líneas que anteriormente daban como resultado errores simplemente agregaban cosas a mi argumento (como se suponía que debían hacerlo). Con suerte, esto podría ayudar a algunas personas que llegan a esta página.

1

Como novato, me enfrenté al mismo "problema".

En términos de novato: cuando llame plot(), la ventana gráfica que obtiene el foco y no se puede introducir más comandos en R. Eso es cuando se llega a la conclusión de que debe cerrar la ventana del gráfico para volver a R. Sin embargo, algunos los comandos, como identify(), actúan en ventanas abiertas/activas de gráficos. Cuando identify() no puede encontrar una ventana gráfica abierta/activa, muestra este mensaje de error.

Sin embargo, puede simplemente hacer clic en la ventana R sin cerrar la ventana del gráfico. A continuación, puede escribir varios comandos en el símbolo R, como identify() etc.

0

Si alguien está usando print función (por ejemplo, con textoM), a continuación, en primer lugar, describir una parcela nulo:

plot(0,type='n',axes=FALSE,ann=FALSE) 

y luego imprimir con newpage = F

print(data, newpage = F) 
5

en mi caso, yo estaba tratando de llamar y plot(x, y)lines(x, predict(yx.lm), col="red") en dos trozos separados en el archivo Rmarkdown. Funcionó sin problemas cuando se ejecutaba trozo por fragmento, pero el documento correspondiente no se tejía. Después de mover todas las llamadas de trazado dentro de un bloque, se resolvió el problema.

+2

También obtiene el error si intenta ejecutar las líneas por separado dentro del mismo fragmento, en lugar de ejecutarlo todo. Supongo que llama a 'dev.off()' en algún lugar debajo del capó? – Gabriel

0

El error plot.new() se produce cuando solo se ejecuta una parte de la función.

Encuentra el archivo adjunto para un ejemplo para corregir el error Con error ....Cuando se corrió sin abline plot() por encima de enter image description here sin errores ... Cuando ambos trama y abline corrieron juntos enter image description here

Cuestiones relacionadas