










Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Cómo usar la función plot en r para crear diferentes tipos de gráficos estadísticos descriptivos. Se incluyen ejemplos de cómo modificar el aspecto exterior del gráfico, como poner un título, etiquetas de ejes y colores. Se muestra cómo dibujar gráficos de puntos, líneas y curvas, y cómo combinar varios tipos de gráficos en uno solo. Se recomienda consultar el documento rcolor.pdf para obtener una presentación clara de la paleta de colores de r.
Tipo: Apuntes
1 / 18
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!











El objetivo de esta lección es introducir los aspectos básicos de los gráficos que se obtienen por medio de la función plot. Muchos de los parámetros y funciones auxiliares que explicamos en esta lección se podrán usar más adelante en otras funciones que producen tipos específicos de gráficos en estadística descriptiva.
Dada una familia de puntos (x 1 , y 1 ),... , (xn, yn),
podemos usar la función plot para dibujar su gráfico. La construcción básica para hacerlo es
plot(x,y),
donde x = (x 1 ,... , xn) es el vector de sus primeras coordenadas e (y 1 ,... , yn) el vector de sus segundas coordenadas. Por ejemplo, para dibujar el gráfico de los puntos
(2, 1), (5, 7), (6, 3), (3, 2), (4, 1),
basta entrar
> x = c (2 ,5 ,6 ,3 ,4) > y = c (1 ,7 ,3 ,2 ,1) > plot (x , y )
y obtenemos la Figura 5.1.
Figura 5.1. Gráfico básico de los puntos (2, 1), (5, 7), (6, 3), (3, 2), (4, 1).
Cuando aplicamos plot a un solo vector (x 1 ,... , xn), R produce el gráfico de los puntos
(1, x 1 ),... , (n, xn).
Es decir, si el vector tiene longitud n, plot(x) es una abreviatura de plot(1:n, x). Así, la Figura 5.2 se obtiene con la siguiente instrucción:
> plot (2^(1:5) )
1 2 3 4 5
5
10
15
20
25
30
Index
2^(1:5)
Figura 5.2. Gráfico básico de los valores (2n)n=1,..., 5.
La función plot también sirve para dibujar el gráfico de una función definida mediante function. Por ejemplo, la gráfica de la función y = x^2 entre x = 0 y x = 1 de la Figura 5.3 se obtiene con el código siguiente:
> f = function ( x ) { x ^2} > plot ( f )
El aspecto de los gráficos que produce plot se puede modificar especificando parámetros en su argumento. Por ejemplo, ya vimos en la Lección 2 el parámetro log, que sirve para indicar si queremos algún eje en escala logarítmica.
Un primer grupo de parámetros permiten modificar el aspecto «exterior» del gráfico:
Para poner un título al gráfico, tenemos que emplear main="título".
Para poner etiquetas (diferentes de las que aparecen por defecto) a los ejes de coordenadas, tenemos que usar xlab="etiqueta" e ylab="etiqueta".
Los valores de estos parámetros se tienen que entrar entre comillas o, si son fórmulas mate- máticas, aplicarles la función expression( ), para que aparezcan en un formato matemático
0 5 10 15 20 25
0
20000
40000
60000
80000
100000
120000
Números de Fibonacci
n
Fn
Figura 5.4. Gráfico de los 31 valores iniciales Fn de la sucesión de Fibonacci.
número natural entre 0 y 25. Con pch=0 obtenemos cuadrados, pch=1 produce los círculos que ya habéis visto (es el valor por defecto), pch=2 produce triángulos, etc. La Figura 5.5 muestra los símbolos correspondientes a los valores de pch: la decena del valor corresponde a la columna y la unidad a la fila. Así, el símbolo que se obtiene con pch=7, , es el que hay en la columna 0 y fila 7, el símbolo que se obtiene con pch=10, ⊕, es el que hay en la columna 1 y fila 0, etc.
Figura 5.5. Símbolos correspondientes a los diferentes valores de pch.
El tamaño de estos símbolos se puede modificar mediante el parámetro cex igualado al factor de escalado: cex=2 produce símbolos el doble de grandes que los que obtenemos por defecto, cex=0.5 produce símbolos de la mitad de tamaño, etc. Por ejemplo,
> # Con los ú ltimos valores de x e y > plot (x , y , pch =20 , cex =3)
produce la Figura 5.6.
2 3 4 5 6
1
2
3
4
5
6
7
x
y
Figura 5.6. Gráfico de los puntos (2, 1), (5, 7), (6, 3), (3, 2), (4, 1) con puntos de tamaño triple.
El color de los puntos se puede especificar mediante el parámetro col igualado al nombre del color en inglés. La paleta de colores de R consta de 502 colores diferentes. Podéis encontrar una presentación muy clara de esta paleta en el documento Rcolor.pdf que encontraréis en el repositorio del curso o en su url original
http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf
Así, por ejemplo,
> # Con los ú ltimos valores de x e y > plot (x , y , col = " red " , pch =15)
produce el gráfico de la izquierda de la Figura 5.7.
Los puntos que se obtienen con pch de 21 a 25 admiten un color para la línea (que se especifica con col) y uno de diferente para el relleno, que se especifica con bg. A modo de ejemplo, el gráfico de la derecha de la Figura 5.7 se obtiene con el código siguiente:
> # Con los ú ltimos valores de x e y > plot (x , y , pch =21 , col = " blue " , bg = " red " , cex =2)
El parámetro type permite indicar el tipo de gráfico que queremos producir. El valor del parámetro se tiene que entrar entre comillas y puede ser:
"p", para dibujar los puntos como simples puntos, como hasta ahora; es el valor por defecto.
"l", para dibujar los puntos unidos por líneas rectas sin que se vean los puntos.
"b", para dibujar los puntos unidos por líneas rectas de manera que se vean los puntos (los dibuja ambos, both: rectas y puntos), pero sin que las rectas entren dentro de los símbolos que representan los puntos.
2 4 6 8 10
2
3
4
5
6
7
8
con o
x
y
2 4 6 8 10
2
3
4
5
6
7
8
con l
x
y
2 4 6 8 10
2
3
4
5
6
7
8
con b
x
y
l
l
l
l
l
2 4 6 8 10
2
3
4
5
6
7
8
con o
x
y
2 4 6 8 10
2
3
4
5
6
7
8
con h
x
y
2 4 6 8 10
2
3
4
5
6
7
8
con s
x
y
2 4 6 8 10
2
3
4
5
6
7
8
con n
x
y
Figura 5.8. Gráficos de los puntos (2, 1), (5, 7), (6, 3), (3, 2), (4, 1) con los distintos valores del parámetro type.
o 2 , (que produce una línea discontinua); "dotted", o 3 , (que produce una línea de puntos); "dotdash", o 4 , (que produce una línea que alterna puntos y rayas).
El grosor se puede especificar con el parámetro lwd. Con lwd=x imponemos que el grosor de las líneas sea x veces su valor por defecto.
Por ejemplo, los dos gráficos de la Figura 5.9 se obtienen con el código siguiente:
> x = c (1 ,3 ,5 ,7 ,11) > y = c (2 ,8 ,4 ,6 ,3) > plot (x , y , type = " o " , pch =19 , lty = " dotted " ) > plot (x , y , type = " o " , pch =19 , lty = " dashed " , lwd =2)
2 4 6 8 10
2
3
4
5
6
7
8
x
y
2 4 6 8 10
2
3
4
5
6
7
8
x
y
Figura 5.9. Gráficos de los puntos (2, 1), (5, 7), (6, 3), (3, 2), (4, 1) con distintos valores de los parámetros lty y lwd.
Si el argumento de plot son dos vectores, por defecto los rangos de los ejes de coordenadas van del mínimo al máximo de los vectores correspondientes. Si su argumento es una función f , por defecto el rango del eje de abscisas es el intervalo [0, 1] y el rango del eje de ordenadas va del valor mínimo al máximo de f sobre el rango de las abscisas. Si queremos modificar estos rangos, tenemos que usar los parámetros xlim e ylim, igualados cada uno a un vector de entradas los extremos del rango.
Veamos un ejemplo de uso de estos parámetros:
> f = function ( x ) { x * log ( x ) } > plot ( f ) # Rangos por defecto > plot (f , xlim = c (1 ,10) ) # Fijamos el rango de x > plot (f , xlim = c (1 ,10) , ylim = c (0 ,50) ) # Fijamos los rangos de x e y
producen, respectivamente, los tres gráficos de la Figura 5.10.
Para modificar las posiciones de las marcas en los ejes de abscisas y ordenadas podemos usar los parámetros xaxp e yaxp, respectivamente. Mediante la expresión xaxp=c(n 1 ,n 2 ,m), imponemos que R dibuje m + 1 marcas igualmente espaciadas entre los puntos n 1 y n 2 del eje de abscisas. La sintaxis para yaxp es la misma. Estas instrucciones no definen los rangos de
Antes de empezar, queremos avisaros de algo muy importante. Cuando añadimos objetos a un gráfico, ya no podemos modificar su diseño general. Por ejemplo, los rangos de coordenadas de los ejes del gráfico final o sus etiquetas serán los del primer gráfico, aunque especifiquemos valores nuevos en el argumento de las funciones que usemos para añadir objetos.
La instrucción points(x,y) añade un punto de coordenadas (x, y) al gráfico activo. Podemos declarar el color, el símbolo etc., de este punto mediante los parámetros usuales. (¡Atención! La instrucción es points, no point.) Por ejemplo,
> f = function ( x ) { x ^2} > plot (f , xlim = c ( -3 ,3) ) > points (0 ,0 , pch =19)
produce la Figura 5.12, en la que hemos dibujado la parábola y = x^2 y hemos marcado su vértice con un punto.
-3 -2 -1 0 1 2 3
0
2
4
6
8
x
f
Figura 5.12. Gráfica de la función f (x) = x^2 con su vértice marcado.
La función points también sirve para añadir una familia de puntos. En este caso, hay que entrar en el argumento de points(x,y) la lista x de sus primeras coordenadas y la lista y de sus segundas coordenadas, como lo haríamos en plot. Veamos algunos ejemplos:
> f = function ( x ) { x ^2} > plot (f , xlim = c (0 ,10) ) > points (0:10 ,(0:10) ^2 , pch =19)
dibuja un trozo de la parábola y = x^2 y añade los puntos (n, n^2 )n=0,..., 10 , produciendo la Figura 5.13.(a), y
> n =0: > x =1.3^ n -2 * 0.8^ n > y =0.2 * 1.3^ n +1.7 * 0.8^ n > plot (n ,x , col = " blue " ) > points (n ,y , pch =19 , col = " red " )
primero dibuja los puntos (n, 1. 3 n^ − 2 · 0. 8 n)n=0,..., 20 como circulitos azules vacíos, y después añade los puntos (n, 0. 2 · 1. 3 n^ + 1. 7 · 0. 8 n)n=0,..., 20 como circulitos rojos llenos, produciendo la Figura 5.13.(b).
0 2 4 6 8 10
0
20
40
60
80
100
x
f
0 5 10 15 20
0
50
100
150
n
x
(a) (b)
Figura 5.13. (a) Gráfico de la función y = x^2 y los puntos (n, n^2 )n=0,..., 10 ; (b) Gráfico de las familias de puntos (n, 1. 3 n^ − 2 · 0. 8 n)n=0,..., 20 y (n, 0. 2 · 1. 3 n^ + 1. 7 · 0. 8 n)n=0,..., 20 usando diferentes símbolos para cada familia.
La función abline sirve para añadir una recta; ya la usamos en la Lección 2 para añadir a un gráfico una recta de regresión calculada con lm. Esta función tiene tres variantes:
abline(a,b) añade la recta y = a + bx.
abline(v=x 0 ) añade la recta vertical x = x 0.
abline(h=y 0 ) añade la recta horizontal y = y 0.
Podemos especificar las características de estas rectas, como su grosor, su estilo o su color, mediante los parámetros pertinentes. Por ejemplo,
> f = function ( x ) { x ^2} > plot (f , xlim = c ( -3 ,3) , col = " red " ) > points (0 ,0 , pch =19 , col = " blue " ) > points (1 ,1 , pch =19 , col = " blue " ) > abline ( v =1 , lty = " dashed " ) > abline ( h =0 , lty = " dotted " ) > abline ( -1 ,2 , lty = " dotdash " )
produce la Figura 5.14. En este caso, hemos añadido a la gráfica de la parábola y = x^2 , dos puntos en (0, 0) y (1, 1), la recta horizontal y = 0 de puntos, la recta vertical x = 1 discontinua y la recta y = −1 + 2x de puntos y rayas.
añade en el punto de coordenadas (x, y) el texto especificado como argumento de labels. El texto se puede entrar entre comillas o en una expression. Esta instrucción admite un parámetro opcional, pos, que puede tomar valores 1, 2, 3 o 4 y permite indicar la posición del texto alrededor de las coordenadas (x, y): 1 significa abajo, 2 a la izquierda, 3 arriba y 4 a la derecha. Sin especificar pos, el texto se sitúa centrado en el punto (x, y). El efecto de pos se ilustra en la Figura 5.16, producida con el código siguiente:
> plot (0 ,0 , pch =19 , xlab = " " , ylab = " " ) > text (0 ,0 , labels = " pos 1 " , pos =1) > text (0 ,0 , labels = " pos 2 " , pos =2) > text (0 ,0 , labels = " pos 3 " , pos =3) > text (0 ,0 , labels = " pos 4 " , pos =4) > points (0 ,0.5 , pch =19) > text (0 ,0.5 , labels = " no pos " )
Figura 5.16. Significado del parámetro pos de la función text.
La función text se puede usar para añadir varios textos en un solo paso. En este caso, x e y han de ser los vectores de abscisas y ordenadas de los puntos donde se añadirán los textos, labels el vector de textos, y pos el vector de sus posiciones; en este último vector, los textos que queremos centrados en su posición se han de indicar con NULL. Así, por ejemplo, la Figura 5.16 también se hubiera podido obtener con el código siguiente:
> plot (0 ,0 , pch =19 , xlab = " " , ylab = " " ) > points (0 ,0.5 , pch =19) > text ( c ( rep (0 ,4) ,0) ,c ( rep (0 ,4) ,0.5) , pos = c (1 ,2 ,3 ,4 , NULL ) , labels = c ( " pos 1 " ," pos 2 " ," pos 3 " ," pos 4 " ," no pos " ) )
La instrucción lines(x,y), donde x = (xi)i=1,...,n e y = (yi)i=1,...,n son dos vectores numéricos de la misma longitud, añade al gráfico una línea poligonal que une los puntos (xi, yi) sucesivos. El efecto es como si añadiéramos un plot(x,y, type=l). Naturalmente, la apariencia de las líneas la podemos modificar con los parámetros usuales de grosor, color, estilo, etc. A modo de ejemplo,
> f = function ( x ) { x ^2}
> plot (f , xlim = c (0 ,10) ) > lines (3.33 * (0:3) , (3.33 * (0:3) ) ^2 , lwd =2 , lty = " dashed " )
produce la Figura 5.17.
0 2 4 6 8 10
0
20
40
60
80
100
x
f
Figura 5.17. Gráfica de la función f (x) = x^2 junto a la línea poligonal que une los puntos (3. 33 n, (3. 33 n)^2 )n=0,..., 3.
La instrucción curve con el parámetro add=TRUE permite añadir la gráfica de una curva a un gráfico anterior. La curva se puede especificar mediante una expresión algebraica con variable x, o mediante su nombre si la hemos definido antes. Por ejemplo,
> f = function ( x ) { x ^2} > plot (f , xlim = c ( -10 ,10) , xlab = " x " , ylab = " y " , main = " monomios " ) > curve ( x ^3 , lty = " dashed " , add = TRUE ) > curve ( x ^4 , lty = " dotted " , add = TRUE )
produce el gráfico de la Figura 5.18.
Las funciones points, abline, lines o text sólo sirven para añadir elementos a un gráfico. En cambio, la función curve también se puede usar para producir la gráfica de una función, como plot, con la ventaja sobre esta última que no sólo se puede aplicar a una función definida con function, sino también a una expresión algebraica. Además, la función curve admite todos los parámetros de plot. Por ejemplo,
> curve ( x ^2 , xlim = c ( -10 ,10) , xlab = " x " , ylab = " y " , main = " monomios " ) > curve ( x ^3 , lty = " dashed " , add = TRUE ) > curve ( x ^4 , lty = " dotted " , add = TRUE )
también produce el gráfico de la Figura 5.18.
Cuando dibujamos varias funciones en un gráfico, como el de la Figura 5.18, es conveniente usar una leyenda para distinguirlas. Para añadirla, se ha de usar la instrucción
legend(posición, legend=c(vector de nombres de las curvas), parámetro=c(vector de valores del parámetro), ..., parámetro=c(vector de valores del parámetro)),
Por ejemplo,
> curve ( x ^2 , xlim = c ( -10 ,10) , xlab = " x " , ylab = " y " , main = " monomios " ) > curve ( x ^3 , lty = " dashed " , add = TRUE ) > curve ( x ^4 , lty = " dotted " , add = TRUE ) > legend ( " bottomleft " , legend = c ( expression ( x ^2) , expression ( x ^3) , expression ( x ^4) ) , lty = c ( " solid " , " dashed " , " dotted " ) )
produce el gráfico de la izquierda de la Figura 5.20. Observad que, aunque en el primer curve no hemos especificado el parámetro lty, y ha tomado su valor por defecto, en el parámetro lty del legend sí que hemos especificado su valor para la primera función.
Veamos otro ejemplo:
> curve (2 * x +3 , xlim = c ( -10 ,10) , ylab = " " ) > curve (2 * x ^2+3 , col = " red " , lwd =2 , add = TRUE ) > curve (2 * x ^3+3 , col = " blue " , lwd =3 , add = TRUE ) > legend ( " topleft " , legend = c ( expression (2 * x +3) , expression (2 * x ^2+3) , expression (2 * x ^3+3) ) , lwd = c (1 ,2 ,3) , col = c ( " black " ," red " ," blue " ) )
produce el gráfico de la derecha de la Figura 5.20.
-10 -5 0 5 10
0
20
40
60
80
100
monomios
x
y
x x^23 x^4 -10 -5 0 5 10
0
10
20
x
2 x + 3 22 xx^23 ++ (^33)
Figura 5.20. Gráficas de diferentes funciones usando como le- yenda el tipo de línea (izquierda) o el color y el grosor (dere- cha).
El código siguiente produce la Figura 5.21; en ella podemos observar que si el único parámetro que especificamos dentro del legend es el color, no se ven las líneas dentro de la leyenda.
> curve (2 * x +3 , -10 , 10 , ylab = " " ) > curve (2 * x ^2+3 , col = " red " , add = TRUE ) > curve (2 * x ^3+3 , col = " blue " , add = TRUE ) > legend ( " topleft " , legend = c ( expression (2 * x +3) , expression (2 * x ^2+3) , expression (2 * x ^3+3) ) , col = c ( " black " ," red " ," blue " ) )
-10 -5 0 5 10
0
10
20
x
2 x + 3 2 x^2 + 3 2 x^3 + 3
Figura 5.21. Gráficas de diferentes monomios usando como leyenda el color y su expresión, pero no el tipo de línea.
Si os interesan, también disponéis de las funciones segments (para añadir segmentos), arrows (para añadir flechas), symbols (para añadir símbolos, como estrellas, termómetros,... ), polygon (para añadir polígonos cerrados especificando sus vértices), etc. Consultad el help de estas ins- trucciones para los detalles sobre cómo se usan.
expression sirve para producir textos matemáticamente bien formateados.
plot es la función genérica para producir gráficos. Sus dos usos principales (por el mo- mento) son:
Algunos parámetros importantes: