2015-10-13 129 views
0

我在excel中有一個數據集。總共有9列:繪圖線圖在x軸上的兩列r

COL1 - member_id

COL2 - A_timespent_in_hrs

COL3 - B_timespent_in_hrs

COL4 - total_timespent_in_hrs(COL2 + COL3)

COL5 - A_pv(不被考慮在問題中)

col6 - B_pv(不考慮問題)

COL7 - total_pv(COL5 + COL6)(不要在問題被認爲是)

col8 - A_timespent_in_hrs%WRT到total_timespent_in_hrs

col9 - B__timespent_in_hrs%WRT到total_timespent_in_hrs

我需要在R(線圖)中繪製圖形,我需要在x軸上顯示col8(A_timespent_in_hrs%)和col9(B_timespent_in_hrs%),並在y軸上顯示col1(member_id)的計數。

樣本數據:

col1 col2 col3 col4 col5 col6 col7 col8 col9 
6834682 0  534.27 534.27 0  2387 2387 0%  100% 
46940 591.69 0  591.69 9508 0  9508 100% 0% 
4903634 24.66 0  24.66 625  0  625  100% 0% 
6777856 35.36 0  35.36 623  0  623  100% 0% 
6327644 15.38 0  15.38 424  0  424  100% 0% 
2581446 385.29 0  385.29 3743 0  3743 100% 0% 
962509 158.6 0  158.6 3014 0  3014 100% 0% 
6598387 0  87  87  0  304  304  0%  100% 
6852254 0  301.04 301.04 0  1692 1692 0%  100% 

我在這裏想要繪製col8和col9的X軸和Y軸COL1的數量的百分比。

該圖應爲0,0 cordinate用100%的值例如col8開始單行所以col9將在該點爲0%,同樣地在任何點上 x軸col9爲100%,因此會col8在此時爲0%。

而在圖表的中間,col8和col9都會顯示col1的50%計數。

注:col8和col9總是在添加像(0 + 100,1 + 99,2 + 98,3 + 97)

由於提前,

尼爾

+0

我想你需要展示一些數據,你想什麼@Batanichek作爲結果 – Batanichek

+0

:我有共同的樣本數據。請幫助! – neel

回答

0

得到100%如果我正確understnd你需要像

我簡單的數據

data=data.frame(a=c(10,10,30,30,100),val=c(43,54,21,34,67)) 
data$b=100-data$a 

1)MA-i顯示柯計數col8和col9(我用dplyr)

data1=group_by(data,a,b) 
data1=summarize(data1,cnt=n()) 

2)地塊

par(xpd=T) 
plot(data1$a,data1$cnt,xlim=c(0,100),type="l",col="red",xaxt="n",xlab="") 
text(cex=1, x=(0:10)*10, y=min(data1$cnt)-0.1, paste0((0:10)*10,"a"), xpd=TRUE, srt=90, pos=2) 
par(new=T) 
plot(data1$b,data1$cnt,xlim=c(0,100),type="l",col="green",xaxt="n",xlab="") 
text(cex=1, x=(10:0)*10, y=min(data1$cnt)-0.25, paste0((0:10)*10,"b"), xpd=TRUE, srt=90, pos=2) 

輸出

enter image description here

我認爲主要的,你需要什麼樣的par(new=T)

對於ggplot你可以簡單地

ggplot(data1) + 
    geom_line(aes(y = cnt,x=a, colour = "green"),) + 
    geom_line(aes(y = cnt,x=b, colour = "red"))+ 
    xlab("")+ 
    theme_bw()+theme(legend.position = "none")+ 
    scale_x_continuous(name="", 
    breaks = c(0,10, 20, 30, 40, 50,60,70,80,90,100), 
                    labels = c('0a\n100b','10a\n90b', '20a\n80b', '30a\n70b', '40a\n60b', '50a\n50b', '60a\n40b' 
                     , '70a\n30b' 
                     , '80a\n20b' , '90a\n10b' , '100a\n0b')) 

輸出 enter image description here

+0

感謝您的方法。我理解了這個概念。如果我需要使用ggplot2來繪製相同的圖片,我們可以做同樣的事嗎? – neel

+0

在ggplot中添加如何操作 – Batanichek

+0

@ Batanichek謝謝你!如何接受你的答案! – neel