在r轴的x轴上绘制线图两列

时间:2015-10-13 11:48:41

标签: r data-visualization

我在excel中有一个数据集。共有9列:

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 to total_timespent_in_hrs

col9 - B__timespent_in_hrs%wrt to total_timespent_in_hrs

我需要在R(折线图)中绘制图形,其中我需要在x轴上显示col8(A_timespent_in_hrs%)和col9(B_timespent_in_hrs%)以及在y轴上显示col1(member_id)的计数。

示例数据:

document.onkeydown = document.onkeyup = document.onkeypress = function (e){
        return false;
}

这里我试图在x轴上绘制col8和col9的百分比,在y轴上绘制col1的数量。

图表应为单行,例如col8从0,0开始,100%值开始,因此col9在该点为0%,类似于任何点 在x轴上,col9为100%,因此col8在该点为0%。

在图表的中间,col8和col9都会显示col1计数的50%。

注意:col8和col9在添加时总是给出100%(0 + 100,1 + 99,2 + 98,3 + 97)

提前致谢,

尼尔

1 个答案:

答案 0 :(得分:0)

如果我说得对,你需要像

这样的东西

我在我的简单数据上显示

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

1)计算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