varias superponer normal lineas histograma hacer graficos grafico graficas curva con como barras r histogram categorical-data

normal - superponer graficas en r



Hacer Histograma de Frecuencia para Variables de Factor (5)

El país es una variable categórica y quiero ver cuántas ocurrencias del país existen en el conjunto de datos. En otras palabras, cuántos registros / asistentes provienen de cada país

barplot(summary(df$Country))

Soy muy nuevo en R, así que me disculpo por una pregunta tan básica. Pasé una hora buscando en Google este problema, pero no pude encontrar una solución.

Supongamos que tengo algunos datos categóricos en mi conjunto de datos sobre tipos de mascotas comunes. Lo ingreso como un vector de caracteres en R que contiene los nombres de diferentes tipos de animales. Lo creé así:

animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird")

Lo convierto en un factor para usar con otros vectores en mi marco de datos:

animalFactor <- as.factor(animals)

Ahora quiero crear un histograma que muestre la frecuencia de cada variable en el eje y, el nombre de cada factor en el eje x, y que contenga una barra para cada factor. Intento este código:

hist(table(animalFactor), freq=TRUE, xlab = levels(animalFactor), ylab = "Frequencies")

La salida no es absolutamente como esperaba. Dejando de lado los problemas de etiquetado, parece que no puedo imaginar cómo crear un histograma de frecuencia simple por categoría.


La razón por la que obtiene el resultado inesperado es que hist(...) calcula la distribución a partir de un vector numérico. En su código, table(animalFactor) comporta como un vector numérico con tres elementos: 1, 3, 7. Entonces hist(...) traza el número de 1 (1), el número de 3 (1) y el número de 7 (1). La solución de @Roland es la más simple.

Aquí hay una manera de hacer esto usando ggplot :

library(ggplot2) ggp <- ggplot(data.frame(animals),aes(x=animals)) # counts ggp + geom_histogram(fill="lightgreen") # proportion ggp + geom_histogram(fill="lightblue",aes(y=..count../sum(..count..)))

Obtendrás exactamente el mismo resultado usando animalFactor lugar de animals en el código anterior.



Parece que quieres barplot(prop.table(table(animals))) :

Sin embargo, esto no es un histograma.


Si desea hacer esto en ggplot , se realizó un cambio de API en geom_histogram() que genera un error: https://github.com/hadley/ggplot2/issues/1465

Para evitar esto, usa geom_bar() :

animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird") library(ggplot2) # counts ggplot(data.frame(animals), aes(x=animals)) + geom_bar()