geom_segment()x轴上的不同起始值

时间:2012-09-17 16:29:51

标签: r ggplot2

ggplot(int_times,aes(x=-stim ,y=num,colour=gene)) +
       scale_y_continuous(breaks=int_times$num,labels=int_times$gene) +
       geom_segment(aes(xend=stim,ystart=num,yend=num),size=5) +
       xlab('IW (min)') +
       ylab('Genes') +
       opts(title='multi')

int_times:

  gene    lag   stim  num
 Pcsk1  46.53 173.53    1
serpin2 83.00 208.02    2
  Bdnf  33.00 277.02    3
 Fosl2  49.00 266.03    4
  Pax1  33.59 243.56    5
  Acan 188.49  70.30    6
 Pthlh  50.00 271.45    7
   Crh  35.00 359.06    8

这就是我现在所拥有的 enter image description here

我想要的是y值'stim'从相应的'lag'开始,而不是从0开始。

我认为你可以在geom_segment的aes()中执行xstart = lag,但这对我不起作用。

任何帮助?

1 个答案:

答案 0 :(得分:3)

试试这个(我在导入时将数据命名为不同的数据):

ggplot(dat,aes(x=-stim ,y=num,colour=gene)) +
       scale_y_continuous(breaks=dat$num,labels=dat$gene) +
       geom_segment(aes(xend=lag,ystart=num,yend=num),size=5) +
       xlab('IW (min)') +
       ylab('Genes') +
       opts(title='multi')

enter image description here

但是你的问题仍然不清楚你的意图。您可以参考开始和结束y值,但您的意思是x?条形的起始值继承自-stim中传递给x的{​​{1}}。我只是以ggplot作为终点。

如果您真的希望条形码从lag开始,那么您应该从lag移除x = -stim,只需在ggplot中传递开始和结束值。 (事实上​​,这可能是一个好主意。)