简体   繁体   中英

Plotting in R using plot function

I am trying to plot few graphs using loops. I am now describing in details.

First I have a function which is calculates the y-variable (called effect for vertical axis)

effect<- function (x, y){
  exp(-0.35*log(x)
      +0.17*log(y)
      -0.36*sqrt(log(x)*log(y)/100))
}

Now I run the following code and use the option par to plot the lines in the same graph. I use axis=FALSE and xlab="" to get a plot without labels. I do this so that my labels are not re-written each time the loop runs and looks ugly.

for (levels in seq(exp(8), exp(10), length.out = 5)){
  x = seq(exp(1),exp(10), length.out = 20)
  prc= effect(levels,x)
  plot(x, prc,xlim = c(0,max(x)*1.05), ylim=c(0.0,0.3),
       type="o", xlab = "",ylab = "",  pch = 16, 
       col = "dark blue", lwd = 2, cex = 1, axes = F)
  label = as.integer(levels) #x variable
  text(max(x)*1.03,max(prc), label )
  par(new=TRUE)
}

Finally, I duplicate the plot command this time using the xlab and ylab options

plot(x, prc, xlab = "X-label", ylab = "effect", 
     xlim = c(0,max(x)*1.05), ylim = c(0,0.3), 
     type="l", col ='blue')

I have several other plots in the similar lines, using complex equations. I have two questions:

  1. Is there an better option to have the same plot with smoother lines?
  2. Is there an easier option with few lines to achieve the same, where I can place the texts (levels) for each line on the right with white background at the back?

以上程序的输出

I believe working with the plot function was tedious and time consuming. So, I have finally used ggplot2 to plot. There were several help available online, which I have used.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM