2012-05-01 48 views
6

Tôi có một số dữ liệu cạo và xử lý từ các trang web theo hình thức này:Tạo không chồng chéo âm mưu khu vực xếp chồng lên nhau với ggplot2

>head(dat) 
    count name   episode percent 
1 309 don 01-a-little-kiss 0.27081507 
2 220 megan 01-a-little-kiss 0.19281332 
3 158 joan 01-a-little-kiss 0.13847502 
4 113 peggy 01-a-little-kiss 0.09903593 
5 107 roger 01-a-little-kiss 0.09377739 
6 81 pete 01-a-little-kiss 0.07099036 

Tôi đang cố gắng để biểu đồ tạo ra một khu vực xếp chồng lên nhau, tương tự như một ở đây: Making a stacked area plot using ggplot2

Khi tôi làm một

require(RCurl) 
require(ggplot2) 
link <- getURL("http://dl.dropbox.com/u/25609375/so_data/final.txt") 
dat <- read.csv(textConnection(link), sep=' ', header=FALSE, 
      col.names=c('count', 'name', 'episode')) 

dat <- ddply(dat, .(episode), transform, percent = count/sum(count)) 

ggplot(dat, aes(episode, percent, group=name)) + 
    geom_area(aes(fill=name, colour=name), position='stack') 

enter image description here

Tôi nhận được biểu đồ kỳ quái này.

Tôi muốn các khu vực không cắt nhau, và để lấp đầy toàn bộ khung hình làm tổng phần trăm cho mỗi hệ số episode bằng 100%.

Trả lời

8

Điều đó thật thú vị. Bạn đang thiếu một hàng duy nhất (Lane đã không xuất hiện tại Tea Leaves ...?), Vì vậy

dat2 <- rbind(dat,data.frame(count = 0,name = 'lane', 
        episode = '02-tea-leaves',percent = 0)) 

ggplot(arrange(dat2,name,episode), aes(x = episode,y = percent)) + 
    geom_area(aes(fill=name,group = name), position='stack') 

enter image description here

xuất hiện để làm việc. Nhưng nó cũng phải đúng thứ tự, và tôi không hoàn toàn chắc chắn tại sao.

+0

Cảm ơn nhiều. Tôi vẫn tò mò về lý do tại sao tôi không làm việc. – Idr

+0

@idris Hàng bị thiếu Tôi hiểu (trong khi nó có thể có nghĩa là bạn "có nghĩa là" cho giá trị đó là 0, tôi nghĩ rằng sẽ rất nguy hiểm khi có ggplot giả định rằng trên toàn cầu). Thứ tự có lẽ là do sử dụng geom_polygon của nó dưới mui xe. – joran

+2

@idris Ngoài ra, tôi nên thêm rằng bằng cách sử dụng 'geom_bar' có thể được dễ dàng hơn, như tôi mong đợi nó sẽ hành xử nhiều hơn dự đoán, và sẽ hiển thị các thông tin tương tự. – joran

Các vấn đề liên quan