2
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

这就是我现在所拥有的 在此处输入图像描述

我想要的是让 y 值“stim”从它们相应的“滞后”开始,而不是全部从 0 开始。

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

有什么帮助吗?

4

1 回答 1

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')

在此处输入图像描述

但是从你的问题中你的意图仍然很不清楚。您指的是开始值和结束y值,但您肯定是指x吗?条形的起始值是从-stim传入的xin继承的ggplot。我只是通过lag作为终点。

如果您真的希望条形图从 开始lag,那么您应该从 中删除x = -stimggplot简单地将开始和结束值传递给geom_segment. (事实上​​,这可能是一个好主意。)

于 2012-09-17T16:50:18.673 回答