CÓMO hacer HISTOGRAMAS en R 💻📊 [R Base graphics | ggplot2]

Поділитися
Вставка
  • Опубліковано 6 сер 2024
  • Qué son los HISTOGRAMAS? ⭐️ Cómo HACER uno en R? ✅ El histograma es una GRÁFICA de barras de la distribución de frecuencias 📊 En este video revisaremos esta definición de histograma. También, vamos a ver como graficar histogramas utilizando la librería base de R y ggplot ✌️
    Para ver el código de R sigue este enlace:
    gonzalezgouveia.com/material-...
    ⭐️ Cupón de Descuento 🎁 para curso de gráficos en R con ggplot2 📊:
    escuela.gonzalezgouveia.com/c...
    Facebook : / gonzalezgouveia
    Twitter: / gonzalezgouveia
    Página web: gonzalezgouveia.com/
    Espero que te lleves algo valioso de este video. Puedes escribirme si tienes alguna duda. Si te ha gustado, comparte este video con quienes quieren aprender!
    Te mando un saludo donde quiera que estés!

КОМЕНТАРІ • 80

  • @Diego-qf5ii
    @Diego-qf5ii 3 роки тому +27

    Para los que no entendieron lo de los bins con hist(breaks=) y lo de hist(breaks=seq()), yo di con la clave después de investigar un poco porque tampoco lo entendía:
    Primero, lo que hace con breaks es elegir el número de bins , es decir, el número de intervalos. Por defecto, lo que vemos en el histograma que sacó al principio es un histograma con 6 bins, es decir, divide los valores posibles de la variable en 6 intervalos (de 50 a 100, de 100 a 150, de 150 a 200, de 200 a 250, de 250 a 300, y de 300 a 350). Lo que confunde mucho es que, al poner un número entero como 10 (breaks=10), por ejemplo, los intervalos en el histograma no cambian respecto al primer histograma. Por lo visto, esto es debido tipo de algoritmo que usa R, que no es muy preciso en ocasiones, pero la función sigue teniendo esa misma utilidad, la de dividir el histograma.
    Lo mejor no es usar esa función así, sino combinarla con seq(). Lo de seq viene de "secuencia". Lo que hace con seq() es primero poner el valor mínimo de la variable (50), luego el máximo (350) y luego el número por el que se va a dividir ese rango (si queremos que haya 10 bins, por ejemplo, tendremos que poner 30, porque 300/10=30). El rango es como la amplitud total, si la variable va de 50 a 350, entonces es que hay 300 puntos en el histograma para ser divididos, y si queremos que haya 10 bins lo suyo es saber cuantos puntos entrarían en cada bin si se dividiese entre 10 (serían 30). Y AHÍ SÍ QUE APARECEN 10 BINS (pruébenlo).
    En definitiva, lo mejor es usar breaks=seq(), no brekas= únicamente

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому +9

      Excelente comentario Diego, gracias! Si no te importa, lo voy a fijar para que más personas puedan verlo. Un saludo!

    • @Diego-qf5ii
      @Diego-qf5ii 3 роки тому

      @@RafaGonzalezGouveia Claro, no hay problema. Saludos! :D

    • @Hideky07
      @Hideky07 3 роки тому

      Amigo un millon de gracias!!! Tienes algun PDF que explique bien sus funciones?

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому +5

      hola @@Hideky07 pdf no tengo pero te puedo recomendar este libro online
      es.r4ds.hadley.nz/
      Es R para ciencia de datos, una traducción de la versión en inglés. Me parece de los libros que mejor explicar R
      te dejo también la versión en inglés
      r4ds.hadley.nz/

    • @Hideky07
      @Hideky07 3 роки тому

      @@RafaGonzalezGouveia mil gracias por enseñarnos tanto.

  • @alonsoquijano8655
    @alonsoquijano8655 3 роки тому +5

    Estimado, tus cursos son geniales. A este en particular, le añadiría valor el explorar la opciones de "paletas de colores", las cuales viene precargadas en Rstudio (ejemplo: col=palette("Pastel 2")).
    Saludos y muchas gracias!

  • @nicolassebastianclaveriasc487
    @nicolassebastianclaveriasc487 3 роки тому

    Muchas gracias!!! de verdad que se me hacia complicado entender a mi profe en la uni, ahora todo lo tengo más claro! gracias!

  • @erickmeave1682
    @erickmeave1682 4 роки тому

    Gracias Rafa, estoy viendo uno a uno tus videos... me están ayudando bastante. Eres un genio!!!

  • @andresdelcarpio1090
    @andresdelcarpio1090 3 роки тому

    muchas gracias Rafa! que genial !

  • @wismeralvarado6501
    @wismeralvarado6501 3 роки тому

    Eres lo máximo chamo, gracias por tus videos saludos!

  • @adolfohernandez2438
    @adolfohernandez2438 4 роки тому

    Muchas gracias por el contenido. Eres muy didáctico, e has ganado un suscriptor. Sigue así, un saludo!

  • @astaramone
    @astaramone 2 роки тому +2

    Muchas gracias por el Video...Voy iniciándome en R, quería preguntarte cómo puedo colocar en el eje Y frecuencias relativas (%) y no frecuencias absolutas. Gracias de antemano

  • @rhinadm4051
    @rhinadm4051 3 роки тому

    Muchad gracias Rafa, una consulta cómo modifico el ancho de la barra en un histograma? Gracias

  • @hugocontreras5731
    @hugocontreras5731 3 роки тому +1

    Hola Rafa, tuve la duda de como cambiar los títulos de los tipos de motor, en el ejercicio aparecía como "0" y "1", luego de probar llegué a esta solución.
    ggplot(data = mtcars,
    mapping = aes(x = hp,
    fill = factor(vs,
    levels = c(0,1),
    labels = c('tipo1','tipo2'))))
    Muchas gracias.
    Saludos!!

  • @alejandrootero5209
    @alejandrootero5209 3 роки тому

    Hola, muy bueno el video!!!. No entiendo que representa breaks en r base graphics, cambié los valores en el script de la practica y no logro dislucidar que se modifica en el histograma. Muchas gracias

  • @rodrigopalma4390
    @rodrigopalma4390 Рік тому

    Muy didáctico. Al trabajar en tu script se hace más sencillo el aprendizaje

  • @frangviggi1100
    @frangviggi1100 3 роки тому

    Rafa
    Buenas tardes. Un par de consultas: i) se pueden hacer histogramas compuestos? Ejemplo, agregar al histograma la curva de distribución normal? ii) R Studio es de pago? Saludos.

  • @FieldsDynamic
    @FieldsDynamic 4 роки тому

    Gracias por tomarte el tiempo para hacer el video. También si es posible y como comentario, sería chévere que hicieras como sesiones mas avanzadas por ejemplo, el análisis de algún data set como los de Miércoles de datos o TidyTuesday. Gracias!

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому +1

      Hola FieldsDynamic! Es una buena idea! Por ahora tengo otros videos en la lista de espera. Pero me gusta tu idea para futuros videos. Muchas gracias!

    • @FieldsDynamic
      @FieldsDynamic 4 роки тому

      @@RafaGonzalezGouveia Muchas gracias por darte el tiempo de responder, espero sigas haciendo excelentes videos y yo por mi parte los comparto en mis redes. Un gran saludo!

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      @@FieldsDynamic Un gran saludo a ti también y gracias por compartir!

  • @_isDev
    @_isDev 3 роки тому

    excelente canal bro

  • @jorged1074
    @jorged1074 3 роки тому +1

    Al momento de usar breaks = seq() me lanza error siempre, el error es el siguiente:
    some 'x' not counted; maybe 'breaks' do not span range of 'x'

  • @llaleira
    @llaleira 3 роки тому +3

    Rafa pero no explicaste que son position = "identity",alpha = 0.8) o fill= "vs motor", quedé colagdisima al final por eso

  • @RafaGonzalezGouveia
    @RafaGonzalezGouveia  4 роки тому +6

    Si quieres agregar una CURVA NORMAL a los histogramas del vídeo puedes seguir este código:
    # Si estás con R BASE
    hist(mtcars$hp, freq=FALSE)
    curve(dnorm(x,
    mean=mean(mtcars$hp),
    sd=sd(mtcars$hp)),
    add=TRUE, col="red")
    # Si estás con GGPLOT2
    ggplot(data = mtcars,
    mapping = aes(x = hp)) +
    geom_histogram(aes(y =..density..),
    bins = 9,
    position = 'identity') +
    stat_function(fun = dnorm,
    args = list(mean = mean(mtcars$hp),
    sd = sd(mtcars$hp)))

    • @dimitryandres8190
      @dimitryandres8190 4 роки тому

      Rafa espero se encuentre bien, tengo una duda, al hacer el codigo para curva de distribucion normal con ggplot me arroja el error: object '..density..' not found, lo compare muchas veces y esta igual, agradezco su opinion

    • @edgargomez8849
      @edgargomez8849 3 роки тому +1

      No pude agregar la línea con R Base, en la consola me sale el siguiente error :(
      > curve(dnorm(x,
      Warning message:
      In doTryCatch(return(expr), name, parentenv, handler) :
      invalid graphics state
      + mean = mean(mtcars$hp),
      + sd =sd(mtcars$hp)),
      + add = TRUE, col= 'red')

  • @francisjesusmorecalero2701
    @francisjesusmorecalero2701 4 роки тому

    Gracias por tus videos Rafa, son muy didácticos. Tengo una consulta, ¿hay alguna norma para usar comillas (" ") o apóstrofes (' ') en el código?, o es irrelevante? Saludos desde Perú

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому +1

      Es igual utilizar comillas o apóstrofes. A veces es preferible utlizar las comillas " " para que no confundan con los acentos como ` o ´

  • @danielatenorio4072
    @danielatenorio4072 9 місяців тому

    Hola! Cómo podría cambiar el color y elegirlo yo misma para rellenar los colores del histograma? Gracias!

  • @gonzalomartinezgarcia4113
    @gonzalomartinezgarcia4113 3 роки тому

    hola Rafa, mi duda es que no entiendo por qué no es posible realizar un histograma con un vector en el que incluyas datos en texto y otro vector con datos numéricos, obviamente cada dato numérico corresponde con uno de texto, para asi indicar la frecuencia de cada dato de texto y evitarme repetir el nombre en el vector, muchas gracias desde España¡

  • @Ricardo20010
    @Ricardo20010 3 роки тому

    como ordeno los meses en un histograma de ggplot2 ?

  • @lenintoledopazmino6198
    @lenintoledopazmino6198 4 роки тому

    Hola muy buen video felicidades, me podrias decir como harias para que R grafique de una sola vez cada variable en modo histograma con R base y GGPLOT2, muchas gracias.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      Hola Lex, no conozco un comando rápido para que grafique de una sola vez cada variable en modo histograma. Si necesitara graficar todo en una misma imagen utilizaría la opción mfrow() pero tendrías que hacerlas una por una. Puedes ver más aqui www.statmethods.net/advgraphs/layout.html

    • @lenintoledopazmino6198
      @lenintoledopazmino6198 4 роки тому +1

      @@RafaGonzalezGouveia, con este codigo que vi de otro curso se podria:
      mtcars %>%
      select_if(is.double) %>%
      gather() %>%
      ggplot(aes(value)) + geom_bar() +
      facet_wrap(~key,scales='free') +
      theme(axis.text=element_text(size=6))
      Lo que si hay que ver primero que tipo de variables se tiene en los datos si es factor (categórica), tipo entero (continua numérica) , en este caso era doble (o double). Lo vi con la funcion glimpse(mtcars), y ya luego se sigue esa estructura para poner que se lea en forma vertical los datos mas un gráfico de barras y que seleccione cada uno a una escala libre, y la ultima linea de código es mas estética.
      Así lo hice y me salio todos los gráficos en una misma hoja de una sola vez, es interesante para tener una idea en forma de histograma (sin mucho detalle) de tus variables.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому +1

      @@lenintoledopazmino6198 Excelente! muchas gracias por este aporte :D

  • @davidmartinezperez5397
    @davidmartinezperez5397 3 роки тому

    como se hace eso pero con 2 variables, por decirlo los NA y los NULL
    porque no me funciona

  • @sergiocb4824
    @sergiocb4824 Рік тому

    tienes algun curso donde te den datos, los ubicas en un vector y no necesariamente los saques de una base de datos

  • @gerardomiguelchipana8225
    @gerardomiguelchipana8225 4 роки тому

    Gracias por el video amigo Rafa.
    En mi caso tengo una tabla con dos columnas, la primera hace mencion a la variable y la segunda columna, a su frecuencia absoluta.
    No encuentro la manera que R reconozca mi segunda columna como la frecuencia de mi variable. Agradecería puedas ayudarme en ello

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      Hola Gerardo! Es posible que este caso te convenga más usar una grafica de barras, eso sería las geometrías de geom_col o geom_bar, puedes mirara este otro video ua-cam.com/video/zAzpuLJA29U/v-deo.html

  • @richardramirez3916
    @richardramirez3916 4 роки тому

    Muy buen video,estoy haciendo unos histogramas y funciona,aunque tengo una duda,si para elaborar el histograma tengo ejes en X y Y como hago para que me refleje ambas cosas porque asi solo me permite llamar una sola fila de datos y no refleja la otra?

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      Hola Richard! En ese caso podrías utilizar geom_col() para representar las gráficas. Las variables de los ejes X,Y los puedes escribir en el aes(). Espero te ayude

    • @rodrigopalma4390
      @rodrigopalma4390 Рік тому

      Estimado es un histograma, no un gráfico.. Histograma muestra la distribución de una sola variable.

  • @juliogomez5224
    @juliogomez5224 4 роки тому +1

    HOLA RAFA, QUISIERA CONSULTARTE COMO HACES PARA QUE LA GRAFICA TENGA ESA DINAMICA DE MOVILIDAD. COMO LA QUE SE PRESENTA EN ESTE VIDEO

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      Hola Julio, ese tipo de gráficas se hace con un paquete que se llama gganimate. Te dejo un artículo que explica como usar el paquete medium.com/datos-y-ciencia/c%C3%B3mo-hacer-un-gif-en-r-con-ggplot-gganimate-b68f234436af

  • @jhomamu
    @jhomamu 4 роки тому +1

    no entendi muy bn lo de breaks = seq no cambio nada, habia entendido que eran la separacion perdon la pregunta.

  • @andreaalvarez8704
    @andreaalvarez8704 2 роки тому

    Hola Rafa, me he inscrito en un curso tuyo pero no puedo empezar pq me da error... He escrito el error en el foro del curso... Como puedo avanzar o comunicarme contigo? Gracias

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  2 роки тому

      hola Andrea. he visto el mensaje ya te he dejado una respuesta

  • @hilarycampoverde1958
    @hilarycampoverde1958 Рік тому

    Me dice que no encuentra la función ggplot. :(

  • @franciscodossantossoares3293
    @franciscodossantossoares3293 2 роки тому

    Como tiene cria histograma Una main que bem

  • @juancamilorubianoperez8928
    @juancamilorubianoperez8928 Рік тому

    Va como rapidito ¿no?

  • @andresemmanuelortizlozano1909
    @andresemmanuelortizlozano1909 3 роки тому

    Hola, al correr el código no gráfica el histograma, en la consola arroja una respuesta como esta:
    $fill
    [1] "vs motor"
    $x
    [1] "caballos de fuerza"
    $y
    [1] "conteos"
    $title
    [1] "titulo"
    $subtitle
    [1] "subtitulo"
    $caption
    [1] "Fuente de los datos: R"
    attr(,"class")
    [1] "labels"
    Espero pudiera ayudarme, gracias.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому

      Hola Andrés! Podrías copiarme la linea de código que estás ejecutando?

  • @didercamilosierraflorez5455
    @didercamilosierraflorez5455 4 роки тому

    buenas rafael excelente video
    tengo una duda
    por que aca en el codigo :
    ggplot(data=mtcars,
    mapping = aes(x = hp))+geom_histogram(bins = 9,
    position = "identity",alpha = 0.8) +
    labs (title = "titulito",
    fill= "vs motor",
    x= "caballos de fuerza",
    y= "conteo",
    substitle= "subtitulos",
    caption= "fuente de los datos)
    en abs (title = "titulito",
    me aparece "unmachate opening brackets" ya lo he reescrito mil veces y nada quedo pendiente y muchas gracias

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому +2

      Hola Dider! gracias. De tu código lo único que veo es al final el caption= "fuente de los datos) que me parece que no se están cerrando las comillas. Podrías intentar cambiando esto a: caption= "fuente de los datos")

  • @karinaccaparamirez4761
    @karinaccaparamirez4761 4 роки тому

    Hola Rafa, consulta quiero hacer el histograma y me sale Warning message:
    In data(semillas1) : data set ‘semillas1’ not found, mi archivo se guardo como tbl_df

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      Hola Karina, podrías mostrarme como has hecho la asignación de la variable? Es decir la línea de código que tiene una flecha así

    • @karinaccaparamirez4761
      @karinaccaparamirez4761 4 роки тому +1

      @@RafaGonzalezGouveia gracias por tu pronta respuesta, ya me salio viendo tu tutorial, porfavor me podrías explicar como pongo en horizontal un boxplot, muchas gracias

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      excelente @@karinaccaparamirez4761 muy bien! puedes intentar agregando una capa a la grafica de boxplot en ggplot2 que sea
      + coord_flip()
      eso lo tienes que poner después de geom_boxplot()

    • @karinaccaparamirez4761
      @karinaccaparamirez4761 4 роки тому

      @@RafaGonzalezGouveia excelente me salio! y como cambio el color de la caja, muchas gracias por todo

  • @jhojansolano4249
    @jhojansolano4249 2 роки тому

    Can't find `position` called 'identify'

  • @christianpatrickquispecard3287
    @christianpatrickquispecard3287 4 роки тому

    Una pregunta. Cuándo realizas los histogramas por parámetros, hay alguna posibilidad que estos se vuelvan acumulados y no se superpongan?

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому

      disculpa Christian, no he entendido tu pregunta. A qué te refieres con histogramas por parámetros?

    • @christianpatrickquispecard3287
      @christianpatrickquispecard3287 4 роки тому +1

      @@RafaGonzalezGouveia me refería si había forma de hacer histogramas acumulados. Seguí como decía el video con mi data (que por cierto agrdezco infinitamente porque me han gustado bastante) pero mis histogramas se superponian y no se acumulaban
      Ese era mi duda. Busca que habia algo con la funcion ggploty creo que se llamaba donde ello no sucedía.

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  4 роки тому +1

      @@christianpatrickquispecard3287 gracias Christian, genial que te hayan gustado. De los histogramas acumulados poco he visto, pero puedes mirar esto stackoverflow.com/questions/18356860/cumulative-histogram-with-ggplot2
      también puede ser que te convenga mirar lo que es la función de distribución empírica en.wikipedia.org/wiki/Empirical_distribution_function
      saludos!

    • @christianpatrickquispecard3287
      @christianpatrickquispecard3287 4 роки тому +1

      @@RafaGonzalezGouveia gracias!

  • @direxroberto61
    @direxroberto61 3 роки тому

    en el ultimo ejercicio, no me funciona la parte de ... position= 'identify' >>>Error: Can't find `position` called 'identify'

    • @RafaGonzalezGouveia
      @RafaGonzalezGouveia  3 роки тому +1

      Hola Roberto, se ve un poco pequeño en el video pero podrías intentar de nuevo cambiando el nombre de la opción a 'identity'

  • @emiliorodriguezcalderon8404

    ggplot(data = mtcars,
    mapping = aes(x = hp,
    fill = factor(vs))) +
    geom_histogram(bins = 9,
    position = 'identity',
    alpha = 0.8) +
    labs(title = 'titulo',
    fill = 'vs motor',
    x = 'caballo de fuerza'
    y = 'conteos',
    subtitle = 'subtitulo',
    caption = 'fuente de los datos R')
    Encuentre el error. por favor

  • @manuelgonzalez4480
    @manuelgonzalez4480 2 роки тому

    En el eje X, a fuerza deben ir numeros?? que pasaría si quiero poner nombres? si quisiera que en el eje X dijera el nombre de paises y en el Y algun dato que si fuera numerio?? Saludos

  • @franciscodossantossoares3293
    @franciscodossantossoares3293 2 роки тому

    Un intervalo la klasse

  • @user-wg2zt4lw8g
    @user-wg2zt4lw8g 6 місяців тому

    Esta demasiado rápido, seria bueno que la velocidad fuera un poco menor

  • @Tysonalacamano
    @Tysonalacamano Рік тому

    Solo usas mcars, que pesado