2015-01-09 55 views
1

我想將這個答案應用於我的數據集,但是 - 作爲一個初學者,它根本不適合我。用ggplot2在R中居中值

下面是一個示例設置和示例代碼:

d <- data.frame(Variant = sample(c("iedere","elke"),size = 50,replace = TRUE), 
     Region = sample(c("VL","NL"),size = 50,replace = TRUE), 
     PrecededByPrep = sample(c("1","0"),size = 50,replace = TRUE), 
     Person = sample(c("person","no person"),size = 50,replace = TRUE), 
     Time = sample(c("time","no time"),size = 50,replace = TRUE)) 

    qplot(factor(Variant), data=d, geom="bar", fill=Variant) + 
     theme_bw() + 
     xlab("") + 
     ylab("Frequencies") + 
     geom_text(aes(label = factor(Variant), y = 5), size = 3) 

這是一個簡單柱狀圖僅使用兩個元素(因此柱狀圖應顯示的「iedere」和「埃爾克」的頻率)的,。我試着增加一個值爲geom_text的值,我認爲這個值至少會顯示出現的次數,但這不起作用。相反,它向我展示了標籤,而不是價值。

我還想將這個應用於堆積圖分組堆積圖 - 如圖所示here。我假設所有三個圖表的方法都是相同的,但是看到我甚至無法得到第一個使用所提供的代碼的工作,我沒有嘗試其他兩個。一些方向和幫助將不勝感激。

+0

只是一個側面說明,你應該儘量避免命名你的對象同樣的事情,一個現有的函數('t'是轉置函數)。 – nrussell 2015-01-09 18:20:46

+1

@nrussell感謝您的提醒。我編輯了我的示例代碼。 – 2015-01-09 18:22:13

+2

那麼'table'也是一個現有的函數名稱。也不需要爲你的例子使用'png/dev.off()';它只是創建一個額外的步驟來打開文件,看看它的樣子。另外大多數人喜歡在保存'ggplot'對象時使用'ggsave()'。 – MrFlick 2015-01-09 18:46:55

回答

2

您需要爲標籤創建輔助數據框。我還重新調整了繪圖代碼,因爲你想用它最終做得更多,qplot實際上只是「快」地塊或那些從基地來繪製誰需要一個快速的映射:

d_labs <- data.frame(table(d$Variant)) 

gg <- ggplot(d, aes(x=Variant)) 
gg <- gg + geom_bar(aes(fill=Variant)) 
gg <- gg + geom_text(data=d_labs, aes(x=Var1, label=Freq), y=5, size=3) 
gg <- gg + theme_bw() 
gg <- gg + labs(x=NULL, y="Frequencies") 
gg 

enter image description here

你通過這種方式獲得的方式更多地控制geom_text geoms。

編輯

可以映射的垂直位置的Freq美學:

gg <- gg + geom_text(data=d_labs, aes(x=Var1, label=Freq, y=Freq/2), size=3) 

enter image description here

+0

[這是後續問題](http://stackoverflow.com/questions/27874548/extend-displaying-values-of-bar-plot-to-stacked-bar)。 – 2015-01-10 09:10:00