Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Add label of median to each boxplot

    I would like to add a label of the median for each group (_stack) in the boxplot below. Is this possible? The median variable is already in the dataset.
    PS: Due to company limitations, I cannot install new SSC packages.

    Many thanks.

    Code:
    clear
    input _stack real_avg_w median
    3 161.4633 724.8383
    1 162.2185 730.3235
    4 162.301  727.0338
    1 162.8728 730.3235
    1 162.8728 755.6666
    3 163.181  730.3235
    5 163.181  755.6666
    3 163.3386 724.8383
    4 163.3386 727.0338
    5 163.3508 755.6666
    1 163.3508 727.0338
    1 163.3508 730.3235
    4 163.9241 724.8383
    5 163.9241 727.0338
    5 164.8176 755.6666
    4 164.9017 727.0338
    1 165.3575 730.3235
    1 166.1311 730.3235
    1 166.6061 730.3235
    5 167.1621 755.6666
    5 168.0044 755.6666
    4 168.3212 727.0338
    1 169.0712 727.0338
    4 169.0712 730.3235
    5 169.0712 755.6666
    4 169.4654 727.0338
    5 169.7039 755.6666
    3 170.0565 724.8383
    1 170.3097 730.3235
    end
    
    graph box real_avg_w, over(_stack, sort(1) descending lab(labsize(vsmall) angle(45))) nooutsides

  • #2
    I am not sure that I follow all of this. Your medians are all much larger than the data values. Here's some technique that doesn't depend on anything but official commands. You have many small choices to change.

    Code:
    clear
    input _stack real_avg_w median
    3 161.4633 724.8383
    1 162.2185 730.3235
    4 162.301  727.0338
    1 162.8728 730.3235
    1 162.8728 755.6666
    3 163.181  730.3235
    5 163.181  755.6666
    3 163.3386 724.8383
    4 163.3386 727.0338
    5 163.3508 755.6666
    1 163.3508 727.0338
    1 163.3508 730.3235
    4 163.9241 724.8383
    5 163.9241 727.0338
    5 164.8176 755.6666
    4 164.9017 727.0338
    1 165.3575 730.3235
    1 166.1311 730.3235
    1 166.6061 730.3235
    5 167.1621 755.6666
    5 168.0044 755.6666
    4 168.3212 727.0338
    1 169.0712 727.0338
    4 169.0712 730.3235
    5 169.0712 755.6666
    4 169.4654 727.0338
    5 169.7039 755.6666
    3 170.0565 724.8383
    1 170.3097 730.3235
    end
    
    graph box real_avg_w, over(_stack, sort(1) descending lab(labsize(vsmall) angle(45))) nooutsides
    
    egen max = max(real_avg_w), by(_stack)
    egen min = min(real_avg_w), by(_stack)
    egen p25 = pctile(real_avg_w), p(25) by(_stack) 
    egen Med = median(real_avg_w), by(_stack) 
    egen p75 = pctile(real_avg_w), p(75) by(_stack) 
    
    gen where = _stack + 0.25
    
    twoway rbar p25 Med _stack, fcolor(stc1*0.2) barw(0.5) pstyle(p1) || rbar p75 Med _stack, fcolor(stc1*0.2) barw(0.5) pstyle(p1) ///
    || rcap p75 max _stack, pstyle(p1) msize(vlarge) || rcap p25 min _stack, pstyle(p1) msize(vlarge) || scatter Med where, ms(none) mla(Med) mlabformat(%2.1f) mlabpos(3) mlabsize(mediumlarge) legend(off) ytitle(real_avg_w) xsc(r(. 5.5))

    Click image for larger version

Name:	avg_w_box.png
Views:	1
Size:	39.1 KB
ID:	1763775

    Comment


    • #3
      Thank you, Nick! This isn’t actually my dataset because it’s stored on a server. But this helps a lot.

      Comment

      Working...
      X