更改使用stat_function绘制的线条的大小

时间:2018-09-10 21:35:28

标签: r function ggplot2 stat

我正在尝试在R上的ggplot2中绘制带有stat_function的一系列函数。该函数在整个过程中保持不变,但是某些参数根据数据帧中的值而变化。我使用了for循环来绘制函数的每种不同形式。

我想对绘制的线条使用不同的大小,但是无论我如何更改aes参数,由stat_function绘制的线条的大小都保持不变。我可以更改图中其他线条的大小。

代码

 test_fun <- function(x,d,fstart,fend,h){
  mp=mean(c(fstart, fend))
  a=h/((mp-fstart)*(mp-fend))
  a*(x-fstart)*(x-fend)
}
plot <- ggplot() + xlim(min(gtf.tx$start), max(gtf.tx$end))+ ylim(-pheight/2,pheight/2)
for(i in 1:nrow(rmats_to_plot)){
  weight=rmats_to_plot[i,5]*100
  start=rmats_to_plot[i,1]
  end=rmats_to_plot[i,2]
  flip=rmats_to_plot[i,6]
  height=rmats_to_plot[i,8]
  plot <- plot+stat_function(mapping = aes(size=1),xlim = c(start,end),fun = test_fun,args = list(fstart=start,fend=end, d=flip,h=height))

}
plot <- plot +  geom_hline(yintercept = 0,size=7,color='white')+
  geom_hline(yintercept=0,alpha=.9, size=1)+geom_segment(data = gtf.tx,aes(x=start,xend=end,y=0, yend=0),size=7)+theme_minimal()

和数据

start   end sample_1    sample_2    total_weight    flip    size    height
31.98   32.71   20.5    39  0.1662  -1  0.73    20
33.36   49.86   16.5    27.5    0.1229  -1  16.5    40
12.13   29.21   20.5    39  0.1662  -1  17.08   60
12.13   32.71   28.5    34  0.1746  1   20.58   -20
51.17   79.79   16.5    40  0.1578  1   28.62   -40
12.13   49.86   21.5    46  0.1885  1   37.73   -60
33.36   79.79   4   2.5 0.0182  -1  46.43   80
12.13   79.79   0   2   0.0056  1   67.66   -80

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:-1)

由于您希望size为特定值,因此应将其放在aes之外。

通过将size=1放在aes中,您可以设置一个比例尺,您需要使用scale_size_*函数来定义该比例尺。就像您放size='dog'

ggplot(mtcars) + geom_point(aes(x=mpg, y=disp, size = 1))

enter image description here

ggplot(mtcars) + geom_point(aes(x=mpg, y=disp, size = 9))

enter image description here

ggplot(mtcars) + geom_point(aes(x=mpg, y=disp), size = 9)

enter image description here