web-dev-qa-db-fra.com

comment créer un histogramme à partir d'une trame de données dans R

Je veux créer un histogramme à partir d'un bloc de données, mais chaque fois que du code est utilisé, j'obtiens une erreur 'x' must be numeric.

    df <- data.frame(col1 = c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120),
    col2 = c(10, 21, 31, 41, 51, 61, 72, 82, 92, 104, 114, 134))

    hist(df)
6
Deividas Kiznis

tu peux faire

hist(df$col1)

ou

with(df, hist(col2))

Si vous voulez que toutes les colonnes chacune dans leurs propres histogrammes, vous pourriez peut-être faire quelque chose comme

par(mfrow=c(2,1))
histout=apply(df,2,hist)
5
Glen_b

Veuillez considérer d'autres visualisations pour votre exemple, car un histogramme peut ne pas être le meilleur pour comparer les données très similaires dans col1 et col2. Dans votre cas, il serait utile de transformer d'abord votre df en un format bien rangé

library(ggplot2)
library(tidyr)

df_tidy <- gather(df, cols, value) 

puis utilisez l'un des graphiques suivants qui mettent en évidence les petites différences dans les données:

comme graphique de densité:

ggplot(df_tidy, aes(x = value)) + 
  geom_density(aes(color=cols))

ou nuage de points:

ggplot(df_tidy, aes(x = value, y=cols)) + 
  geom_point(aes(color=cols), size=3) +
  scale_x_continuous(breaks = c(0,25,50,75,100,125))

ou boxplot:

ggplot(df_tidy, aes(x = cols, y=value)) + 
  geom_boxplot(aes(fill=cols))
3
Agile Bean

Si vous voulez un histogramme de toutes les données, vous pouvez utiliser

hist(c(df$col1,df$col2))
1
PDG

Je recommande d'utiliser la bibliothèque ggplot voici un exemple

generateHistogram  <- function(columnName) {
  #I used library(ggplot2)
  houseDFPlot <- ggplot(data=DF, aes(x=DF[columnName]))
  #layering
  houseDFPlot + geom_histogram()
}
0
ibrahimgunes