2010-10-29 10 views
21

A manera de dibujar la curva correspondiente a una función dada es la siguiente:dibujar más de un curvas de función en la misma parcela

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 
plot (fun1, -8, 5) 

¿Cómo puedo añadir curva de otra función (por ejemplo fun2, que también se define por su fórmula matemática) en la misma trama?

+0

Usa plotFun {mosaic} http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=mosaic/man/plotFun.Rd&d=R_CC –

Respuesta

24
plot (fun2, -8, 5, add=TRUE) 

Comprobar también ayudan página para curve.

+8

Tenga en cuenta que no siempre puede usar el parámetro 'add': funciona aquí porque está pasando una función para trazar, pero si escribe, por ejemplo,' plot (x, y, add = TRUE) ', simplemente recibe una advertencia de que 'agregar' no es un parámetro gráfico. – nico

+1

@nico Sí. Este es un caso muy especial porque 'plot' para la llamada de función' curve'. Es por eso que siempre usa 'curve' para trazar funciones. – Marek

8

Utilice la función points. Tiene la misma sintaxis exacta que plot.

Así, por ejemplo:

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 

x <- seq(0, 2*pi, 0.01) 
plot (x, fun1(x), type="l", col="blue", ylim=c(-0.8, 0.8)) 
points (x, -fun1(x), type="l", col="red") 

en cuenta que los parámetros de la trama como ylim, xlim, títulos y como se utilizan solamente desde el primer plot llamada.

+2

¿qué tal las líneas directamente :) – VitoshKa

+0

Sí, esa es otra opción . Realmente depende de lo que necesite hacer ... hay varias maneras de lograr esta tarea en R. :) – nico

5

Mediante el par()

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 
fun2 <- function(x) sin(cos(x)*exp(-x/4)) 

plot(fun1, -8,5) 
par(new=TRUE) 
plot(fun2, -8,5) 
+1

Uso el mismo paradigma todo el tiempo. Probablemente desee una expresión ylim = range (...) en la primera gráfica, tal vez un color diferente en la segunda gráfica, juegue con xlab y ylab, suprima los ejes si la escala no se superpone, etc. pp. Al menos por más solución general Lo que mostraste responde la pregunta formulada :) –

22

Usando matplot:

fun1<-function(x) sin(cos(x)*exp(-x/2)) 
fun2<-function(x) sin(cos(x)*exp(-x/4)) 
x<-seq(0,2*pi,0.01) 
matplot(x,cbind(fun1(x),fun2(x)),type="l",col=c("blue","red")) 
+6

matplot es la mejor respuesta, ya que si comienzas a agregar curvas podrías terminar saliendo de la zona de trazado actual. matplot ordena todo esto para usted y se asegura de que ambas funciones permanezcan a la vista. – Spacedman

+2

@Spacedman: ¿y si no conoce las funciones por adelantado? :) – nico

Cuestiones relacionadas