2015-11-11 95 views
-1

我的數據是用百分比ggplot酒吧從分類數據

Category Produkt.Segment 
A   bundle 
A   digital 
B   digital 
B   digital 
B   bundle 
C   digital 
D   bundle 
D   bundle 
D   digital 
D   bundle 

我怎樣才能讓一個ggplot酒吧小包裝由Product.Segment從變量「類別」中的百分比(最好用標籤上的頂部棒)? 有什麼想法? 我已經試過這樣的事情:

ggplot(df, aes(Category))+ 
geom_bar(fill="grey40")+scale_x_discrete()+ 
theme(panel.background = element_rect(fill = "lightblue"))+ 
ggtitle("Categories by Produkt Segments")+ 
ylab("Frequency")+ 
xlab("Category")+ 
facet_grid(~Produkt.Segment)+ 
scale_y_continuous(labels=percent_format()) 
+0

嗨添加標籤,歡迎SO。你有沒有嘗試過? – Heroka

+0

嗨,我試圖在新列中手動計算百分比,但sum()函數不適用於分類數據:count(df $ category)/ sum(count/df $ category)將不起作用。此外,scale_y_continuous(labels = percent_format())只是使y計數一個百分比值(加2個零和%符號)。 –

回答

1

試一下:

all <- read.table(header = TRUE, stringsAsFactors = FALSE, text = " 
         Category Produkt.Segment 
    A   bundle 
         A   digital 
         B   digital 
         B   digital 
         B   bundle 
         C   digital 
         D   bundle 
         D   bundle 
         D   digital 
         D   bundle") 


ggplot(aes(x = Category, y = Produkt.Segment), data = all) + geom_histogram(aes(y = ..count../sum(..count..) * 100, fill = Produkt.Segment)) 

enter image description here

,並與wrap的段

ggplot(aes(x = Category, y = Produkt.Segment), data = all) + geom_histogram(aes(y = ..count../sum(..count..) * 100, fill = Produkt.Segment)) + 
    facet_wrap(~Produkt.Segment) 

如果你想擁有每增加1%小組,我會這樣做,但我相信這一點e爲你們這裏能做到這一點更簡單的方法

library(dplyr) 
all1 <- group_by(all, Produkt.Segment, Category) %>% arrange(Produkt.Segment) %>% summarise(il = n()) %>% ungroup() %>% 
    group_by(Produkt.Segment) %>% mutate(per = il/sum(il)) 

ggplot(aes(x = Category, y = per), data = all1) + geom_histogram(stat = "identity") + 
    facet_wrap(~Produkt.Segment) + ylab("Percent") 
+0

謝謝 小麪包裹工作,但它考慮到所有df的百分比。你能否指出如何以「包裝」的方式來計算它自己的組(Product.Segment)中的百分點?以及如何將酒吧標籤添加到個別垃圾箱? –

+0

@Pat我爲您的問題添加了解決方案 – Mateusz1981

0

感謝你的貢獻@ Mateusz1981,是用dplyr包的數據操作,我可以得到想要的結果,但是,我到最近的一個「洗淨切的解決方案是這樣的:

ggplot(aes(x = Category, y = Produkt.Segment, fill=Produkt.Segment), data = all)+geom_bar(aes(y = ..density.., group=Produkt.Segment), binwidth = 25)+facet_grid(.~Produkt.Segment)+theme(legend.position="none")+ggtitle("Product Segments")+ylab("[n]")+xlab("Category")+scale_y_continuous(labels = percent) 

不過,我不知道如何在各個垃圾箱

The Output from R