lunes, 11 de mayo de 2015

GRAFICOS BASICOS


############################
###   GRAFICOS BASICOS   ###
############################

# En R se pueden hacer graficos muy complejos, especialmente
# si utilizamos paquetes diseñados especificamente para ello.
# Vamos a empezar poco a poco, sin cargar ningun paquete, porque
# muchos de los comandos que aprendamos nos serviran de base
# para manejar con mas soltura los graficos complejos.

x = c(3,3,5,8,10,7,4,6,8,10)
x
y = c(15,45,44,40,35,33,30,27,22,16)
y
z = rep((c("A","B")),c(5,5))
z

df=data.frame(x,y,z)
df

x11() # Abre una ventana para la representacion grafica

plot(x, y) # Scatter plot.
            # El primer vector indica las coordenadas de los puntos
            # en el eje de las abcisas (X)
            # y el segundo en el de las ordenadas (y).
            # Representa los puntos de las coordenadas
            # en el mismo orden que tienen los vectores.
plot(df$x, df$y)

boxplot(x) # Diagrama de cajas y bigotes o boxplot.
boxplot(df$y)

boxplot(x ~ z) # Diagrama de cajas y bigotes o boxplot
            # en funcion de una variable con dos niveles.
boxplot(df$x ~ df$z)

barplot(x) # Grafica de barras.
x
y
qqplot(x,y) # Quantile Quantile plot.
            # Ordena los valores de ambos vectores
        # y los representa unos frente a los otros con puntos.

qqnorm(x) # Compara la distribucion de datos de un vector
        # con los valores teoricos de una distribucion normal.

qqline(x) # Añade una linea para hacer la evaluacion visial
        # mas facil.
        # Cuanto mas se aproximen todos los puntos a la linea,
        # mas proximos a una distribucion normal
        # estaran los valores del vector.

hist(x) # Histograma.
        # Representa la frecuencia de los datos del vector,
        # dados unos rangos de datos.


################################################################
###   DISPOSITIVOS GRAFICOS. Trabajar y organizar ventanas   ###
################################################################

x11()

dev.list() # Nos da la lista de dispositivos graficos abiertos.

x11() # Abrimos otra ventana mas

dev.list() # Nos da la lista de dispositivos graficos abiertos.

dev.cur() # Para saber cual es el dispositivo activo

dev.set(2) # Para activar el dispositivo grafico en el que queramos
            # representar las graficas.

dev.cur() # Lo comprobamos

dev.off() # Para desactivar la ventana activa.

# Ejemplo del uso de varias ventanas graficas.

x11() # Abrimos el primer dispositivo

plot(df$x, df$y) # Dibujamos en el el scatter plot de x frente a y

x11() # Abrimos el segundo dispositivo

boxplot(df$x ~ df$z) # Dibujamos en el segundo
            # la grafica de cajas y bigotes de x en funcion de z

x11() # Abrimos el tercer dispositivo.

barplot(df$x) # Dibujamos el grafico de barras de x

# Supongamos que por algun motivo nos interesa cambiar
# el grafico de la ventana 2

dev.cur() # Para saber cual es el dispositivo activo

dev.set(2) # Activamos la ventana 2

boxplot(df$y ~ df$z)


##################################
###   VARIOS GRAFICOS EN UNO   ###
##################################

dev.off() # Desactivamos todas las ventanas graficas o dispositivos

x11() # Abrimos el primer dispositivo

matrix(c(1:4), nrow=2, byrow=FALSE)

layout(matrix(c(1:4), nrow=2, byrow=FALSE))

layout.show(4) # Muestra las cuatro particiones

Conf2x2 = matrix(c(1:4), nrow=2, byrow=FALSE)
Conf2x2

Conf3x2 = matrix(c(1:6), nrow=2, byrow=TRUE)
Conf3x2

layout(Conf3x2)
layout.show(6)

layout(Conf2x2)
layout.show(4)


# Ejemplo

x11()

layout(Conf3x2)
layout.show(6)

plot(df$x, df$y) # Scatter plot.

boxplot(df$x) # Diagrama de cajas y bigotes o boxplot.

boxplot(df$x ~ df$z) # Diagrama de cajas y bigotes o boxplot
                        # en funcion de una variable con dos niveles.

barplot(df$x) # Diagrama de barras

qqnorm(df$x) # Compara la distribucion de datos con los
                # valores teoricos de una distribucion normal

qqline(df$x) # Añade una linea.

hist(df$x) # Histograma.


# Se pueden dividir las ventanas de muchas formas,
# segun nuestras necesidades.

x11()

Conf2mas1 = matrix(c(1:3, 3), nrow=2, byrow=F)
            # Creamos un matriz a partir de un vector con los valores
            #c(1:3,3) que es igual que c(1,2,3,3)
Conf2mas1

layout(Conf2mas1)
layout.show(3)

plot(df$x, df$y) # Scatter plot.

boxplot(df$x) # Diagrama de cajas y bigotes o boxplot.

boxplot(df$x ~ df$z) # Diagrama de cajas y bigotes o boxplot
# en funcion de una variable con dos niveles.


# Se pueden hacer las divisiones en particiones irregulares

x11()
Conf2mas1
layout(Conf2mas1)
layout.show(3)
layout(Conf2mas1, widths=c(1, 3), # con "widths" configuramos la anchura
       heights=c(3, 1)) # con "heights" configuramos la altura
layout.show(3)


#######################################
###   PERSONALIZAR GRAFICOS. Plot   ###
#######################################


plot(df$x, df$y)

Conf3x2 = matrix(c(1:6), nrow=2, byrow=TRUE)
lay.1 = layout(Conf3x2)
layout.show(lay.1)

plot(df$x, df$y,   
     main="Nombre del grafico", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Subtitulo",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo


plot(df$x, df$y,
     type="p",      # "p": puntos (por defecto),
                    # "l": lineas,
                    # "b": puntos conectados por lineas,
                    # "o": igual al anterior, pero las lineas estan sobre los puntos,
                    # "h": lineas verticales,
                    # "s": escaleras, los datos se representan como la parte superior de las lineas verticales,
                    # "S": igual al anterior pero los datos se representan como la parte inferior de las l´ineas verticales

     main="Nombre del grafico", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Tipo p (defecto)",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo

plot(x, y,
     type="l",      # "l": lineas,
     main="Grafico de lineas", # Texto del titulo
     cex.main=3,    # Tamaño de letra del titulo
     sub="Tipo l",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo

plot(x, y,
     type="b",      # "b": puntos conectados por lineas,
     main="Lineas y puntos", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Tipo b",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo

plot(x, y,
     type="o",      # "o": igual al anterior, pero las lineas estan sobre los puntos,
     main="Lineas sobre los puntos", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Tipo o",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo

plot(x, y,
     type="h",      # "h": lineas verticales,
     main="Lineas verticales", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Tipo h",   # Texto del subtitulo
     cex.sub=1.5)   # Tamaño de letra del subtitulo

dev.off() # Desactivamos todas las ventanas graficas o dispositivos


plot(x, y,
     type="o",      # "p": puntos (por defecto), 
     main="Nombre del grafico", # Texto del titulo
     cex.main=2,    # Tamaño de letra del titulo
     sub="Subtitulo",   # Texto del subtitulo
     cex.sub=1.5,   # Tamaño de letra del subtitulo
     xlab="Explicacion eje X",  # Texto en el eje X
     ylab="Explicacion eje Y",  # Texto en el eje Y
     cex.lab=0.8,   # Tamaño de letra de los ejes
     axes=T,     # Definir si se dibujan los ejes (TRUE, opcion por defecto), o no se dibujan (FALSE)
     xlim=c(0, 15), # Rango de datos del eje X
     ylim=c(0, 50), # Rango de datos del eje Y
     pch=24,        # Forma de los puntos. Mas info en help("points").
     col="red",     # Color del borde de los puntos
     bg="seagreen2",   # especifica el color del fondo. La lista de los 657 colores disponibles se
                    # puede ver con colors())
     bty="7",       # controla el tipo de caja que se dibuja alrededor del grafico:
                    # "o", "l", "7", ¨c", ¨u" o "]" (la caja se
                    # parece a su respectivo caracater);
                    # si bty="n" no se dibuja la caja
     tcl=-0.5,       # un valor que especifica la longitud de los marcadores de eje
                    # como una fraccion de la altura de una linea
                    # de texto (por defecto tcl=-0.5)
     las=1,         # un entero que controla la orientacion de los caracteres en los ejes (0: paralelo a los ejes, 1: horizontal, 2:
                    # perpendicular a los ejes, 3: vertical)
     cex=1.5)       # un valor que controla el tama~no del texto y simbolos con respecto al valor por defecto; los siguientes
                    # parametros tienen el mismo control para n´umeros en los ejes, cex.axis, t´itulos en los ejes, cex.lab,
                    # el titulo principal, cex.main, y el subtitulo, cex.sub

?plot # par = parametros modificables en un grafico
help("points")
colors()


#############################
###   EXPORTAR GRAFICOS   ###
#############################

# Especificando la ubicacion

jpeg("C:/Users/Raul Ortiz/Desktop/Grafico1.jpeg") # Direccion mas nombre.extension
plot(df$x, df$y)    # Grafico
dev.off()           # Cierre del archivo


# Lo habitual es que lo queramos guardar en nuestro directorio de trabajo,
# en ese caso no es necesario especificar ninguna ruta.

getwd() # Comprobamos cual es nuestro directorio de trabajo.

jpeg(filename="Grafico2.jpeg") # Nombre del archivo y extension
plot(df$x, df$y)    # Grafico
dev.off()           # Cierre del archivo

# Algunos argumentos para modificar el grafico.

jpeg(filename="Grafico3.jpeg",   # Nombre del archivo y extension
     width = 33,    # Anchura
     height = 19,   # Altura
     res= 72,       # Resolucion 72ppi es un estandar
     units = "cm")  # Unidades.
plot(df$x, df$y)    # Grafico
dev.off()           # Cierre del archivo

help(jpeg) # Mas informacion al respecto


# Tambien funciona con PDF

pdf(file="Grafico4.pdf") # Nombre del archivo y extension. Ojo file=, no filename=
plot(df$x, df$y)    # Grafico
dev.off()           # Cierre del archivo

help(pdf) # Mas informacion al respecto

# Se puede exportar desde la pestaña PLOT

plot(df$x, df$y)

1 comentario:

  1. Hola, buen día.
    Tengo una serie de datos (shp, data.frames diferentes) y necesito ponerlos todos en un solo gráfico pero corresponden a distintos paquetes de procesamiento. Entre ellos un data.frame de trayectorias.
    Si me indican como unificar todo en un solo gráfico se los agradecería.

    ResponderEliminar