2015-01-07 14 views
7

R version 3.1.1 (2014-07-10) Platform: i386-w64-mingw32/i386 (32-bit)Vẽ biểu đồ tích lũy với mặt tiêu cực và tích cực trong ggplot?

Tôi đang làm việc trên biểu đồ với ggplot2. Mục đích là để có một biểu đồ tích lũy cho mặt tiêu cực và tích cực kết hợp trong một âm mưu. Dễ dàng tôi có thể vẽ biểu đồ một cách riêng biệt cho mặt tiêu cực và tích cực, nhưng ngay sau khi tôi kết hợp chúng, nó sẽ trở thành một mớ hỗn độn.

mẫu dữ liệu:

df <- structure(list(NEG = c(-42.962, -1.86, -13.275, -56.188, -2.25, 
-12.199, -3.953, -13.309, -4.512, -11.461, -19.813, -54.311, 
-59.934, -7.045, -14.44, -40.829, -143.034, -233.009, -70.72, 
-5.578), POS = c(180.328, 290.809, 156.894, 31.414, 629.74, 590.672, 
268.89, 69.618, 415.007, 138.444, 10.139, 20.565, 106.027, 69.129, 
19.809, 8.22, 53.711, 36.035, 11.694, 12.705)), .Names = c("NEG", 
"POS"), row.names = c(NA, 20L), class = "data.frame") 

Mã cho mặt tích cực làm việc:

ggplot(df)+ 
     geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1) 

Mã cho mặt tiêu cực làm việc quá:

ggplot(df)+ 
     geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1) 

Nhưng việc kết hợp hai lớp này tạo ra một mess:

ggplot(df)+ 
     geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)+ 
     geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1) 

Tôi hy vọng bạn có thể giúp tôi!

Cảm ơn rất nhiều!

+2

Nice, câu hỏi rõ ràng với một ví dụ tái sản xuất và mã bạn đã thử ~~> (1). Chúc mừng. – Henrik

Trả lời

7

Vấn đề là đối với cả hai lớp tổng tích lũy được tính trên toàn bộ trục x.

ggplot(df)+ 
    geom_histogram(aes(x= POS, y=ifelse(x>=0, 
             rev(cumsum(rev(..count..)))/4, 
             0)), 
       binwidth = 1)+ 
    geom_histogram(aes(x= NEG, y=ifelse(x<=0, 
             cumsum(..count..)/4, 
             0)), 
       binwidth = 1) 

resulting plot

+0

Cảm ơn bạn! Giải pháp này không hoạt động! – VDK

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