Ya quiero comparar varios distibutions, estoy creando histrograms de la misma variable, pero para los distintos años. Sin embargo, la escala del eje y de los cambios, porque el punto más alto de las frecuencias es diferente cada año. Quiero crear histogramas en los que todo el eje y de la pantalla de la misma gama, incluso si no hay frecuencias para ese punto.

Más precisamente, en un año en el pico de la disribution es de 30 cargos, en otro año, es de 35. en los gráficos, 30 tiene el mismo aspecto como 35 en el otro debido a que la escala del eje y cambios.

He intentado ylim=(35), pero que sólo conduce al error «valor no válido para ylim».

Gracias!

  • usted necesita dar una inferior y límite superior…. trate de ylim=c(0, 35) . (Usted también puede dejar que ggplot hacer parte de este trabajo para usted… ggplot(yourdataframe, aes(yourvariable)) + geom_histogram() + facet_grid( . ~ year)
InformationsquelleAutor Liviliv | 2015-09-26

1 Comentario

  1. 9

    Tipo ?hist en tu consola para ver la documentación. Verás ylim es para «el gama de … y de valores». Hay un ejemplo que muestra cómo ylim se utiliza, hist(x, freq = FALSE, ylim = c(0, 0.2)). Allí se puede ver que usted necesita para dar ylim un vector que contiene los límite inferior y límite superior.

    Con un histograma que casi siempre el límite inferior igual a cero (si no lo es generalmente considerado como una estadística pecado). Así que como se señaló en los comentarios de arriba, que se podía hacer con la configuración de ylim=c(0,35).

    Muestra con un ejemplo mínimo:

    #Sets frequencies with which x and y data will appear
    yfreq <- c(1:10, 10:1) #frequencies go up to 10 and down again
    xfreq <- c(1:7, rep(7, times=6), 7:1) #frequencies go up to 7 and down again
    
    xdata <- rep(1:length(xfreq), times=xfreq)
    ydata <- rep(1:length(yfreq), times=yfreq)
    
    par(mfrow=c(2,2))
    hist(ydata, breaks=((0:max(ydata)+1)-0.5), ylim=c(0,10),
         main="Hist of y with ylim set")
    hist(xdata, breaks=((0:max(xdata)+1)-0.5), ylim=c(0,10),
         main="Hist of x with ylim set")
    hist(ydata, breaks=((0:max(ydata)+1)-0.5),
         main="Hist of y without ylim set")
    hist(xdata, breaks=((0:max(xdata)+1)-0.5),
         main="Hist of x without ylim set")

    Histograma (cuenta): Cambiar la Escala del eje y

    Por lo que el establecimiento ylim adecuada hace que el lado a lado la comparación de histograma trabajo mejor.

    Que en la práctica es conveniente hacer esto de forma automática, simplemente por la búsqueda de lo que es el pico más alto en ambos conjuntos de datos y el uso que en su ylim. Cómo hacerlo depende de si se construye un histograma de frecuencias (que es lo que R hace automáticamente si sus descansos son equidistantes, a menos que se especifique lo contrario) o de densidades, pero es una manera de crear — pero no la trama — histograma de los objetos y extraer sus counts o sus density según corresponda.

    #Make histogram object but don't draw it
    yhist <- hist(ydata, breaks=((0:max(ydata)+1)-0.5), plot=FALSE)
    xhist <- hist(xdata, breaks=((0:max(xdata)+1)-0.5), plot=FALSE)
    
    #Find highest count, use it to set ylim of histograms of counts
    highestCount <- max(xhist$counts, yhist$counts)
    hist(ydata, breaks=((0:max(ydata)+1)-0.5), ylim=c(0,highestCount),
         main="Hist of y with automatic ylim")
    hist(xdata, breaks=((0:max(xdata)+1)-0.5), ylim=c(0,highestCount),
         main="Hist of x with automatic ylim")
    
    #Same but for densities
    highestDensity <- max(xhist$density, yhist$density)
    hist(ydata, breaks=((0:max(ydata)+1)-0.5), 
         freq=FALSE, ylim=c(0,highestDensity),
         main="Hist of y with automatic ylim")
    hist(xdata, breaks=((0:max(xdata)+1)-0.5),
         freq=FALSE, ylim=c(0,highestDensity),
         main="Hist of x with automatic ylim")

    Histograma (cuenta): Cambiar la Escala del eje y

Dejar respuesta

Please enter your comment!
Please enter your name here