2016-05-30 144 views
1

假設我有一個數據集如下,R:如何從多列頻率數據創建條形圖?

ID  Class 
a  Class_1 
a  Class_1 
b  Class_1 
b  Class_1 
b  Class_1 

c  Class_2 
c  Class_2 
c  Class_2 
d  Class_2 
d  Class_2 
d  Class_2 

e  Class_3 
f  Class_3 

我想表明,有 2學生Class_1,在Class_2 2學生和 2學生Class_3使用ggplot一個條形圖( )

我很感激你的時間。謝謝。

+0

'dput'您的數據集將是有益的。 – 989

回答

1
d <- data.frame(ID = c(letters[c(1,1,2,2,2,3,3,3,4,4,4,5,6)]), 
      Class = c(rep("Class_1", 5), rep("Class_2", 6), "Class_3", "Class_3")) 

,如果你想顯示因子的數量的信息

p <- ggplot(d, aes (x = Class, fill = ID)) + geom_bar(position="fill") 
plot(p) # check the number of breaks and use it as length 
p + scale_y_continuous(label=seq(0, 2, length=5)) 
# Hoom, something strange ? 

不必

ggplot(d[! duplicated(d),], aes (x = Class, fill = ID)) + geom_bar() 

plot plot

+0

我的道歉!我的問題是錯誤的。你想再看一遍更新的問題嗎? –

+0

非常感謝。它解決了我的問題。 ggplot(d [!duplicated(d),],aes(x = Class,fill = ID))+ geom_bar() 這個工作正常。然而,當我在新數據集中有兩列時,它就起作用了。我想,複印機對於兩個以上的欄目給出了不同的結果。 –

+0

如果還有其他列,ggplot(d [!duplicated(d [,c(1,2)]),],aes(x = Class,fill = ID))+ geom_bar()。您可以決定duplicateated()的關鍵列。 – cuttlefish44

0

假設你上面提供的數據是在一個名爲dat數據幀:

library(ggplot2) 

ggplot(dat, aes(x = Class)) + geom_bar() 

應該工作。 geom_bar的默認值是獲取頻率。

+0

嗨大衛,我在我原來的帖子中犯了一個錯誤,我的道歉。現在,我已經糾正它,每個班級的學生應該是獨特的學生。希望現在很清楚? –