Announcement

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

  • Ring charts

    Dear All,

    I find ring charts a useful alternative to pie charts (essentially vacating the central space for showing some indicator value, name, or definition), but recently I've noticed that they are being used for comparisons of various subgroups, such as e.g. in here:

    Click image for larger version

Name:	ring-charts1.png
Views:	1
Size:	66.3 KB
ID:	1761178



    Now is it just me, or do you also find it rather counterintuitive to visually present such comparisons??
    Consider for example this chart:

    Click image for larger version

Name:	ring-charts2.png
Views:	1
Size:	37.2 KB
ID:	1761179


    Here the larger value of 83 is visually dominated by a lower value of 72.

    My approach would be to use a bar chart for comparing such indicators:

    Code:
    clear all
    input str5 g int val
      "Girls" 83
      "Boys" 72
    end
    
    graph hbar (asis) val, over(g) ///
       title("Early Childhood Development Index, SDG 4.2.1")
    Click image for larger version

Name:	ring-charts3.png
Views:	1
Size:	20.8 KB
ID:	1761181


    But I wonder:
    - why the ring-chart comparison is being used for such purposes?
    - Has there been some reputable advice to use it or not to use it in such cases?
    - do you find it being more informative or confusing?

    Thank you, Sergiy Radyakin
    Attached Files

  • #2
    My understanding is that the big problem with pie charts is that it can be fairly difficult to see the differences in size between similar proportions. Of course the nice thing about pie charts is that they do a good job of conveying the visual metaphor of a proportion being part of a larger whole (a slice of a pie).

    What I like about the ring chart idea here is that you can fix one part of the inner ring and outer ring, then let the other end vary depending on the size of the proportion to make visual comparisons a little easier. Notably, that doesn't work for anything other than a binary variable. If you wanted to compare (let's say) men and women across some variable with more than two categories, I don't think it works very well and probably runs into many of the same problems pie charts have (size of categories aren't easy to visually compare).

    I agree, that last example has some problems. I think the larger proportion should always be the outer loop and the bolder color, because I think that makes the most sense visually. You might break the bolded color rule if you really want to emphasize some larger point about the inside group with the smaller proportion, but one should still keep the group with the larger proportion on the outside in my opinion. Notice that last example breaks both rules.

    I also think this is really more visually interesting and creative (maybe it "pops" a little more) and perhaps less useful for interpreting data compared to the bar chart. Not sure where you found these, but it's the kind of thing I might expect to see in corporate materials where visual design is a little more important rather than in an academic context (outside of maybe computer science).

    Comment


    • #3
      Dear Daniel,

      thank you for your insights with this regard.

      Not sure where you found these...
      The link was included as a hyperlink in the first post of this thread, but barely noticeable. Here is the full info in plain text:

      SURINAME MULTIPLE INDICATOR CLUSTER SURVEY 2018
      SNAPSHOTS OF KEY FINDINGS
      https://statistics-suriname.org/wp-c...sh-resized.pdf

      The report is comparing men and women / boys and girls on numerous occasions, and I believe varying which group is inner and which one is outer (like you suggested) would create even more havoc for the reader as they wouldn't be able to easily deduce the overall situation from several charts, but would need to pay attention as to where in the chart is the corresponding value.

      Best, Sergiy

      PS: For those interested, Andrew Musau has published a tip on how to create donut charts in Stata:
      https://journals.sagepub.com/doi/pdf...6867X211063414

      Comment


      • #4
        The report is comparing men and women / boys and girls on numerous occasions, and I believe varying which group is inner and which one is outer (like you suggested) would create even more havoc for the reader as they wouldn't be able to easily deduce the overall situation from several charts, but would need to pay attention as to where in the chart is the corresponding value.
        Ah, yes, that makes sense.

        Comment


        • #5
          The journey towards infographic hell always begins by valuing style over meaningful communication
          Alan Smith, as quoted and discussed at https://www.amazon.co.uk/How-Charts-...dp/129234279X/

          I don't recall seeing this design before, but it's not surprising as a variation on doughnut (donut) charts.

          Pie charts can be motivated by the idea of proportions of a whole, but ring charts add an irrelevant asymmetry between what is plotted on the inside and what on the outside and there is no independent rationale in the examples in #1 for a circular or polar scale.

          I'd go a small step further than Sergiy Radyakin and suggest that dot charts would also work as well, indeed better here,

          For the example here, 0 and 100% are both natural reference levels; detail that often favours dot charts over bar charts is that you can omit zero as a reference if it's irrelevant.

          For the example here, I'd agree with anyone who humphs that a table would work well and take up less space.

          My code -- meaning graph dot when presented with string variables -- uses alphabetical order for each variable, which by accident is fine, or so I suggest. I don't advocate alphabetical order as a matter of principle.

          Code:
          * Example generated by -dataex-. For more info, type help dataex
          clear
          input str16 what str7 who float(percent id)
          "computer use"     "males"   42 1
          "computer use"     "females" 40 1
          "mobile phone use" "males"   96 2
          "mobile phone use" "females" 95 2
          "internet use"     "males"   79 3
          "internet use"     "females" 78 3
          end
          label values id id
          label def id 1 "computer use", modify
          label def id 2 "mobile phone use", modify
          label def id 3 "internet use", modify
          
          separate percent, by(who) veryshortlabel
          
          graph dot (asis) percent?, over(who) over(what) marker(1, ms(Oh) msize(large)) marker(2, ms(+) msize(large)) blabel(bar, size(medlarge) pos(inside))  vertical legend(off) yline(100, lp(solid)) ytitle(percent)
          Click image for larger version

Name:	suriname.png
Views:	1
Size:	34.5 KB
ID:	1761215

          Last edited by Nick Cox; 10 Aug 2024, 04:11.

          Comment


          • #6
            Horizontal works fine too, or so I suggest.

            Various cosmetic tweaks as well.

            Code:
            graph dot (asis) percent?, over(who) over(what) marker(1, ms(Oh) msize(large)) marker(2, ms(+) msize(large)) blabel(bar, size(medium) pos(inside))  legend(off) yline(100, lw(thin) lp(solid)) noextend ytitle(percent) ysc(noextend alt)
            Click image for larger version

Name:	surriname2.png
Views:	1
Size:	35.2 KB
ID:	1761217

            Comment


            • #7
              A twist in the ring chart idea is that the people who don't have their own sections of the circular bars, as well as the people who do. This is an old device that in one sense is redundant, but either way it doesn't need the circular design. Some authors have mentioned thermometers here. Alternatively it's a variation on glasses part full, part empty.

              People interested in these matters will be able to imagine all sorts of small variations.

              Code:
              * Example generated by -dataex-. For more info, type help dataex
              clear
              input str16 what str7 who float(percent id)
              "computer use"     "males"   42 1
              "computer use"     "females" 40 1
              "mobile phone use" "males"   96 2
              "mobile phone use" "females" 95 2
              "internet use"     "males"   79 3
              "internet use"     "females" 78 3
              end
              label values id id
              label def id 1 "computer use", modify
              label def id 2 "mobile phone use", modify
              label def id 3 "internet use", modify
              
              separate percent, by(who) veryshortlabel
              
              gen axis = real(word("1 2 7 8 4 5"), _n)
              
              gen max2 = 100 if who == "males"
              gen max1 = 100 if who == "females"
              
              twoway bar max1 axis, fcolor(none) lcolor(stc1) base(0) || ///
              bar max2 axis, fcolor(none) lcolor(stc2) base(0) || ///
              bar percent1 axis, fcolor(stc1*0.4) lcolor(stc1) || ///
              bar percent2 axis, fcolor(stc2*0.4) lcolor(stc2) || ///
              scatter percent1 axis, ms(none) mla(percent1) mlabc(black) mlabsize(*1.5) mlabpos(6) || ///
              scatter percent2 axis, ms(none) mla(percent2) mlabc(black) mlabsize(*1.5) mlabpos(6) ///
              legend(off) xla(1 "males" 2 "females" 4 "males" 5 "females" 7 "males" 8 "females", tlength(*0.2) tlc(none)) ///
              xmla(1.5 "computer use" 7.5 "mobile phone use" 4.5 "internet use", labsize(*2) tlength(*5) tlc(none)) ///
              xtitle("") yla(0(20)100) xsc(alt) ytitle(percent)
              Click image for larger version

Name:	surriname3.png
Views:	1
Size:	36.8 KB
ID:	1761274

              Last edited by Nick Cox; 11 Aug 2024, 06:42.

              Comment

              Working...
              X