2011-09-06 10 views

Odpowiedz

64

Wystarczy za pomocą freq=FALSE argumentu nie daje histogram z procentów, to normalizuje histogram więc łączna powierzchnia równa 1.
Aby otrzymać histogram procentach pewnym zbiorze danych, powiedzmy x, zrobić:

h = hist(x) 
h$density = h$counts/sum(h$counts)*100 
plot(h,freq=FALSE) 

Zasadniczo to, co robisz, to tworzenie obiektu histogramu, zmiana właściwości gęstości na procenty, a następnie ponowne drukowanie.

+4

Bardzo ładne. Sugeruję zmianę etykiety osi Y: wykres (h, freq = F, ylab = "Procent") – PeterVermont

1

Jeśli chcesz wyraźnie do listy każdą wartość x na osi x (czyli wykreślić procenty zmiennej całkowitej takich jak impulsy), to następujące polecenie jest bardziej wygodna alternatywa:

# Make up some data 
set.seed(1) 
x <- rgeom(100, 0.2) 

# One barplot command to get histogram of x 
barplot(height = table(factor(x, levels=min(x):max(x)))/length(x), 
     ylab = "proportion", 
     xlab = "values", 
     main = "histogram of x (proportions)") 

enter image description here

# Comparison to hist() function 
h = hist(x, breaks=(min(x)-1):(max(x))+0.5) 
h$density = h$counts/sum(h$counts)*100 
plot(h,freq=FALSE, main = "histogram of x (proportions)") 

enter image description here

Powiązane problemy