Announcement

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

  • Generate graph of rankings over time

    Hello Stata users,
    I would like to produce a graph where I follow over time the ranking of individuals on a particular variable (position 1 appearing at the top of the graph). Specifically, I am ranking individuals according their total assets and I would like to plot the graph over time of their rankings (here a visual example: https://stephanieevergreen.com/ranking-data-in-excel/). I am interested on top 10 individuals only to make the graph more legible (hence missing information on ranking for some individuals). Any help would be much appreciated:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str7 bank float(quarterly rank_assets)
    "Bank_01" 201 1
    "Bank_01" 205 1
    "Bank_01" 209 1
    "Bank_01" 213 1
    "Bank_01" 217 1
    "Bank_01" 221 1
    "Bank_01" 225 1
    "Bank_01" 229 1
    "Bank_01" 233 1
    "Bank_01" 237 1
    "Bank_01" 241 1
    "Bank_01" 245 1
    "Bank_02" 201 6
    "Bank_02" 205 6
    "Bank_02" 209 5
    "Bank_02" 213 5
    "Bank_02" 217 5
    "Bank_02" 221 2
    "Bank_02" 225 3
    "Bank_02" 229 2
    "Bank_02" 233 2
    "Bank_02" 237 2
    "Bank_02" 241 3
    "Bank_02" 245 2
    "Bank_03" 201 2
    "Bank_03" 205 2
    "Bank_03" 209 2
    "Bank_03" 213 4
    "Bank_03" 217 2
    "Bank_03" 221 3
    "Bank_03" 225 2
    "Bank_03" 229 3
    "Bank_03" 233 3
    "Bank_03" 237 3
    "Bank_03" 241 2
    "Bank_03" 245 3
    "Bank_04" 201 4
    "Bank_04" 205 3
    "Bank_04" 209 3
    "Bank_04" 213 2
    "Bank_04" 217 3
    "Bank_04" 221 4
    "Bank_04" 225 4
    "Bank_04" 229 4
    "Bank_04" 233 4
    "Bank_04" 237 4
    "Bank_04" 241 4
    "Bank_04" 245 4
    "Bank_05" 201 9
    "Bank_05" 205 10
    "Bank_05" 209 .
    "Bank_05" 213 10
    "Bank_05" 217 10
    "Bank_05" 221 9
    "Bank_05" 225 7
    "Bank_05" 229 7
    "Bank_05" 233 6
    "Bank_05" 237 5
    "Bank_05" 241 5
    "Bank_05" 245 5
    "Bank_06" 201 .
    "Bank_06" 205 .
    "Bank_06" 209 .
    "Bank_06" 213 .
    "Bank_06" 217 .
    "Bank_06" 221 .
    "Bank_06" 225 10
    "Bank_06" 229 5
    "Bank_06" 233 5
    "Bank_06" 237 6
    "Bank_06" 241 7
    "Bank_06" 245 8
    "Bank_07" 201 7
    "Bank_07" 205 7
    "Bank_07" 209 8
    "Bank_07" 213 6
    "Bank_07" 217 6
    "Bank_07" 221 6
    "Bank_07" 225 6
    "Bank_07" 229 6
    "Bank_07" 233 7
    "Bank_07" 237 7
    "Bank_07" 241 8
    "Bank_07" 245 7
    "Bank_08" 201 .
    "Bank_08" 205 .
    "Bank_08" 209 .
    "Bank_08" 213 .
    "Bank_08" 217 .
    "Bank_08" 221 .
    "Bank_08" 225 .
    "Bank_08" 229 9
    "Bank_08" 233 8
    "Bank_08" 237 10
    "Bank_08" 241 6
    "Bank_08" 245 9
    "Bank_09" 201 8
    "Bank_09" 205 8
    "Bank_09" 209 6
    "Bank_09" 213 7
    end
    format %tq quarterly


  • #2
    Here's a stab at that, which could be improved further, but my frank view is that separate panels to avoid spaghetti are preferable.

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str7 bank float(quarterly rank_assets)
    "Bank_01" 201 1
    "Bank_01" 205 1
    "Bank_01" 209 1
    "Bank_01" 213 1
    "Bank_01" 217 1
    "Bank_01" 221 1
    "Bank_01" 225 1
    "Bank_01" 229 1
    "Bank_01" 233 1
    "Bank_01" 237 1
    "Bank_01" 241 1
    "Bank_01" 245 1
    "Bank_02" 201 6
    "Bank_02" 205 6
    "Bank_02" 209 5
    "Bank_02" 213 5
    "Bank_02" 217 5
    "Bank_02" 221 2
    "Bank_02" 225 3
    "Bank_02" 229 2
    "Bank_02" 233 2
    "Bank_02" 237 2
    "Bank_02" 241 3
    "Bank_02" 245 2
    "Bank_03" 201 2
    "Bank_03" 205 2
    "Bank_03" 209 2
    "Bank_03" 213 4
    "Bank_03" 217 2
    "Bank_03" 221 3
    "Bank_03" 225 2
    "Bank_03" 229 3
    "Bank_03" 233 3
    "Bank_03" 237 3
    "Bank_03" 241 2
    "Bank_03" 245 3
    "Bank_04" 201 4
    "Bank_04" 205 3
    "Bank_04" 209 3
    "Bank_04" 213 2
    "Bank_04" 217 3
    "Bank_04" 221 4
    "Bank_04" 225 4
    "Bank_04" 229 4
    "Bank_04" 233 4
    "Bank_04" 237 4
    "Bank_04" 241 4
    "Bank_04" 245 4
    "Bank_05" 201 9
    "Bank_05" 205 10
    "Bank_05" 209 .
    "Bank_05" 213 10
    "Bank_05" 217 10
    "Bank_05" 221 9
    "Bank_05" 225 7
    "Bank_05" 229 7
    "Bank_05" 233 6
    "Bank_05" 237 5
    "Bank_05" 241 5
    "Bank_05" 245 5
    "Bank_06" 201 .
    "Bank_06" 205 .
    "Bank_06" 209 .
    "Bank_06" 213 .
    "Bank_06" 217 .
    "Bank_06" 221 .
    "Bank_06" 225 10
    "Bank_06" 229 5
    "Bank_06" 233 5
    "Bank_06" 237 6
    "Bank_06" 241 7
    "Bank_06" 245 8
    "Bank_07" 201 7
    "Bank_07" 205 7
    "Bank_07" 209 8
    "Bank_07" 213 6
    "Bank_07" 217 6
    "Bank_07" 221 6
    "Bank_07" 225 6
    "Bank_07" 229 6
    "Bank_07" 233 7
    "Bank_07" 237 7
    "Bank_07" 241 8
    "Bank_07" 245 7
    "Bank_08" 201 .
    "Bank_08" 205 .
    "Bank_08" 209 .
    "Bank_08" 213 .
    "Bank_08" 217 .
    "Bank_08" 221 .
    "Bank_08" 225 .
    "Bank_08" 229 9
    "Bank_08" 233 8
    "Bank_08" 237 10
    "Bank_08" 241 6
    "Bank_08" 245 9
    "Bank_09" 201 8
    "Bank_09" 205 8
    "Bank_09" 209 6
    "Bank_09" 213 7
    end
    format %tq quarterly
    
    separate rank, by(bank) veryshortlabel
    local rankvars `r(varlist)'
    
    gen OK = !missing(rank_assets)
    bysort OK bank (q) : gen first = rank_assets[1] if OK & _n == 1
    by OK bank : gen last = rank_assets[_N] if OK & _n == _N
    
    line `rankvars' quarterly, cmissing(n ..) ysc(reverse) legend(off) xsc(r(195 252)) yla(1/10, ang(h)) ///
    || scatter first last q, ms(none ..) mla(bank bank) mlabc(black ..) mlabpos(9 3) name(G1, replace)
    
    twoway connected rank_assets quarterly, by(bank, compact note("")) xsc(r(198 242)) xla(200(20)240) ysc(reverse) yla(1/10, labsize(small) grid ang(h)) xtitle("") name(G2, replace)
    Click image for larger version

Name:	bank_rank.png
Views:	1
Size:	40.6 KB
ID:	1654346

    Click image for larger version

Name:	bank_rank2.png
Views:	1
Size:	33.1 KB
ID:	1654347

    ##

    Again, there is scope to improve the second graph too. EDIT: take out the compact.
    Last edited by Nick Cox; 14 Mar 2022, 15:54.

    Comment


    • #3
      Many thanks Nick, I appreciate it. I will work to improve the second graph.

      Comment

      Working...
      X