Changing the size of line drawn with stat_function
Changing the size of line drawn with stat_function
I'm trying to plot a series of functions with stat_function
in ggplot2 on R. The function remains the same throughout, but some of the parameters change according to values in a data frame. I used a for loop to plot each different form of the function.
stat_function
I want to use different sizes for the lines drawn, but no matter how I change the aes
parameter, the size of the lines drawn by stat_function
remains constant. I can change the size of other lines in the plot just fine.
aes
stat_function
The code
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()
and the data
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
any help would be appreciated
1 Answer
1
Since you want size
to be a specific value, you should put it outside the aes
.
size
aes
By putting size=1
in the aes
, you're setting up a scale which you need to define with a scale_size_*
function. It's the same thing as if you put size='dog'
size=1
aes
scale_size_*
size='dog'
ggplot(mtcars) + geom_point(aes(x=mpg, y=disp, size = 1))
ggplot(mtcars) + geom_point(aes(x=mpg, y=disp, size = 9))
ggplot(mtcars) + geom_point(aes(x=mpg, y=disp), size = 9)
Thank you! that worked
– Vinay Swamy
Sep 11 '18 at 14:59
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
You should add "width" argument to your code. Please refer to the below article for more details. https://stackoverflow.com/questions/12985091/print-data-frame-with-columns-center-aligned
– Prasan Karunarathna
Sep 10 '18 at 21:47