2016-04-08 10 views
0

Ich möchte eine BarPlot der Frequenzdichte der folgenden geordneten kategorische Daten zeichnen:Frequenzdichte BarPlot von kategorialen Variablen

summary(ACC[EA$TYPE=="A"]) 
NG SG LG MG HG 
2 25 36 17 0 

Wenn ich Grundstück:

plot(ACC[EA$TYPE=="A"]) 

ich:

enter image description here

Aber ich möchte alle Werte durch die Summe aufteilen eine Frequenzdichte erhalten: Ie. plot(ACC[EA$TYPE=="A"]/sum(as.numeric(ACC[EA$TYPE=="A"]))) aber das funktioniert nicht. Irgendwelche Tipps?

Cheers,

Antwort

2

Die Standard-Plotten Funktion für eine factor ist barplot. Also, wenn Sie eine andere grafische Darstellung wollen, kann es einfacher sein, direkt diese Funktion zu nutzen: (mit einem Zufallsfaktor Beispiel)

f <- factor(sample(letters[1:5], 100, r=T)) 
h <- table(f)/length(f) 
barplot(h) 

enter image description here

Abrufen der same result with ggplot2 ist schwieriger, und aus irgendeinem Grund, ich brauchte die Daten in einem data.frame zu setzen, damit es funktioniert:

dat <- data.frame(f = f) 
library(ggplot2) 
ggplot(dat, aes(x=f, y=..count../sum(..count..), fill=f)) + geom_bar() 

enter image description here

+0

Wenn Sie einen Faktor haben, ist das eine bessere Option! –

+0

Vielen Dank dafür, es funktioniert wie ein Charme. Auf diese Weise muss ich die Xticks nicht einmal umbenennen. Was aber tut f in eine Tabelle? Ja, f ist ein Faktor. – HCAI

+0

ggplot2 mag nur 'data.frame's, und wenn (' ggplot() ') mit etwas anderem übergeben wird, wird es" on-the-fly "verstärkt. –

2

Es wäre einfacher, es zu beheben mit einem reproducible example, so habe ich für Sie ein. Die folgenden Arbeiten wie ein Charme:

# creates the vector 
x <- c(2, 25, 36, 17, 0) 
names(x) <- c("NG", "SG", "LG", "MG", "HG") 

# raw x = counts 
barplot(x, ylab="Count") 
# when divided by the total count, we obtain frequencies and we barplot them 
barplot(x/sum(x), ylab="Frequency") 

Ich sehe keinen Grund, warum dies nicht so lange arbeiten könnten als ACC[EA$TYPE=="A"] eine numerisch ist:

barplot(ACC[EA$TYPE=="A"]/sum(ACC[EA$TYPE=="A"]), ylab="Frequency") 
+0

Ihnen danken, ich appreci aß deine Hilfe. Insbesondere danke, dass Sie den Link auf ein reproduzierbares Beispiel setzen. Ich weiß, ich muss das tun, aber ich weiß nie wie. – HCAI

Verwandte Themen