Dot Plot in R using R Plotting

前端 未结 1 1832
南旧
南旧 2021-01-07 05:57

What is the best way to generate a dotplot with two factors like this, preferably using standard R plots (not ggplot) and from a 2x2 data frame. The horizontal lines should

相关标签:
1条回答
  • 2021-01-07 06:24

    The following piece of code should do the trick:

    set.seed(1)
    t1 = rnorm(10); t2 = rnorm(10, 2)
    t1_g2 = rnorm(10, 4);t2_g2 = rnorm(10)
    
    ##Don't print the axes labels
    par(ann=FALSE)
    
    ##Plot first set of data.
    ##Need to check for sensible ranges
    ##Use the jitter function to spread data out.
    plot(jitter(rep(0,10),amount=0.2), t1,
         xlim=range(-0.5,3.5), ylim=range(-3,8),
         axes=FALSE,frame.plot=TRUE)
    points(jitter(rep(1,10), amount=0.2), t1_g2, col=2)
    points(jitter(rep(2,10), amount=0.2), t2)
    points(jitter(rep(3,10), amount=0.2), t2_g2, col=2)
    
    ##Add in the y-axis
    axis(2, seq(-4,8,by=2))
    
    ##Add in the x-axis labels
    mtext("Treatment 1", side = 1, at=0.5)
    mtext("Treatment 2", side = 1, at=2.5)
    
    ##Add in the means
    segments(-0.25, mean(t1), 0.25, mean(t1))
    segments(0.75, mean(t1_g2), 1.25, mean(t1_g2))
    segments(1.75, mean(t2), 2.25, mean(t2))
    segments(2.75, mean(t2_g2), 3.25, mean(t2_g2))
    
    ##Add in the legend
    legend(0, 8, c("Group 1", "Group 2"), col=1:2, pch=1)
    

    which gives:

    enter image description here

    0 讨论(0)
提交回复
热议问题