2012-01-31 14 views
7

Ponieważ hist() podstawy R nie zgłasza procentów (i freq = FALSE) również nie pomaga, zwróciłem się do lattice.Histogram na kratownicy

histogram(rnorm(10000)) 

Proszę mi pomóc z następujących czynności:

  1. Jak mogę pozbyć polu arround działki?
  2. W jaki sposób mogę osobno zdefiniować wierzchołek etykiety X/Y i oś X/Y?
  3. Jak mogę podać niestandardowe nazwy dla osi X i Y?
+0

można opracować na co twój kłopot z 'hist' jest, po prostu z ciekawości? Kiedy określam 'freq = FALSE' otrzymuję histogram gęstości (to znaczy procent). – joran

+1

Witam @joran. Aby zobaczyć, o czym prawdopodobnie chodzi w ECII, spróbuj 'hist (runi (1000), freq = FALSE, col = grey (.6))'. Oś Y poprawnie odnotowuje gęstość prawdopodobieństwa, ale masa prawdopodobieństwa z każdym taktem (iloczyn gęstości mniej więcej na szerokość) powinna wynosić około jednej dziesiątej gęstości, ponieważ jest 10 taktów ... Więc myślę * ECII pyta o tyknięcia osi, które indeksują odsetek obserwacji mieszczących się w każdym takcie. –

Odpowiedz

6

To powinno Ci zacząć:

library(lattice) 
histogram(rnorm(10000),  
    main=list(
     label="Main plot title", 
     cex=1.5), 
    xlab=list(
     label="Custom x-axis label", 
     cex=0.75), 
    ylab=list(
     label="My very own y-axis label", 
     cex=1.2), 
    scales=list(cex=0.5), 
    par.settings = list(axis.line = list(col = 0)) 
) 

enter image description here

7

Albo, jeśli chcesz trzymać hist(), można go modyfikować nieznacznie, jak pokazano poniżej.

Ta funkcja raz wywołuje hist(), aby uzyskać wartość zwracaną, która jest obiektem zawierającym różnego rodzaju przydatne informacje o strukturze histogramu. Następnie wykorzystuje (a) szerokość pojemników i (b) gęstość dla każdego słupka, aby obliczyć (c) procent obserwacji spoczywających na każdym takcie.

histPercent <- function(x, ...) { 
    H <- hist(x, plot = FALSE) 
    H$density <- with(H, 100 * density* diff(breaks)[1]) 
    plot(H, freq = FALSE, ...) 
} 

histPercent(rnorm(10000), col="dodgerblue", las=1, 
      xlab="Echs-axis", ylab="Why-axis") 

enter image description here

+0

Fantastyczne. Myślałem, że nie będzie to możliwe z bazą. Muszę jednak przekazać to Andrie od czasu określonego kratownicy. Dziękuję Ci bardzo. – ECII

+1

+1 dla col = "dodgerblue" :-) – ECII

+0

Lubię etykiety osi. –