Applied Metaphors: Learning TRIZ, Complexity, Data/Stats/ML using Metaphors
  1. Teaching
  2. Data Viz and Analytics
  3. Descriptive Analytics
  4. Parts of a Whole
  • Teaching
    • Data Viz and Analytics
      • Tools
        • Introduction to R and RStudio
        • Introduction to Radiant
        • Introduction to Orange
      • Descriptive Analytics
        • Data
        • Graphs
        • Summaries
        • Counts
        • Quantities
        • Groups
        • Densities
        • Groups and Densities
        • Change
        • Proportions
        • Parts of a Whole
        • Evolution and Flow
        • Ratings and Rankings
        • Surveys
        • Time
        • Space
        • Networks
        • Experiments
        • Miscellaneous Graphing Tools, and References
      • Statistical Inference
        • 🧭 Basics of Statistical Inference
        • 🎲 Samples, Populations, Statistics and Inference
        • Basics of Randomization Tests
        • 🃏 Inference for a Single Mean
        • 🃏 Inference for Two Independent Means
        • 🃏 Inference for Comparing Two Paired Means
        • Comparing Multiple Means with ANOVA
        • Inference for Correlation
        • 🃏 Testing a Single Proportion
        • 🃏 Inference Test for Two Proportions
      • Inferential Modelling
        • Modelling with Linear Regression
        • Modelling with Logistic Regression
        • 🕔 Modelling and Predicting Time Series
      • Predictive Modelling
        • 🐉 Intro to Orange
        • ML - Regression
        • ML - Classification
        • ML - Clustering
      • Prescriptive Modelling
        • 📐 Intro to Linear Programming
        • 💭 The Simplex Method - Intuitively
        • 📅 The Simplex Method - In Excel
      • Workflow
        • Facing the Abyss
        • I Publish, therefore I Am
      • Using AI in Analytics
        • Case Studies
          • Demo:Product Packaging and Elderly People
          • Ikea Furniture
          • Movie Profits
          • Gender at the Work Place
          • Heptathlon
          • School Scores
          • Children's Games
          • Valentine’s Day Spending
          • Women Live Longer?
          • Hearing Loss in Children
          • California Transit Payments
          • Seaweed Nutrients
          • Coffee Flavours
          • Legionnaire’s Disease in the USA
          • Antarctic Sea ice
          • William Farr's Observations on Cholera in London
      • TRIZ for Problem Solvers
        • I am Water
        • I am What I yam
        • Birds of Different Feathers
        • I Connect therefore I am
        • I Think, Therefore I am
        • The Art of Parallel Thinking
        • A Year of Metaphoric Thinking
        • TRIZ - Problems and Contradictions
        • TRIZ - The Unreasonable Effectiveness of Available Resources
        • TRIZ - The Ideal Final Result
        • TRIZ - A Contradictory Language
        • TRIZ - The Contradiction Matrix Workflow
        • TRIZ - The Laws of Evolution
        • TRIZ - Substance Field Analysis, and ARIZ
      • Math Models for Creative Coders
        • Maths Basics
          • Vectors
          • Matrix Algebra Whirlwind Tour
          • content/courses/MathModelsDesign/Modules/05-Maths/70-MultiDimensionGeometry/index.qmd
        • Tech
          • Tools and Installation
          • Adding Libraries to p5.js
          • Using Constructor Objects in p5.js
        • Geometry
          • Circles
          • Complex Numbers
          • Fractals
          • Affine Transformation Fractals
          • L-Systems
          • Kolams and Lusona
        • Media
          • Fourier Series
          • Additive Sound Synthesis
          • Making Noise Predictably
          • The Karplus-Strong Guitar Algorithm
        • AI
          • Working with Neural Nets
          • The Perceptron
          • The Multilayer Perceptron
          • MLPs and Backpropagation
          • Gradient Descent
        • Projects
          • Projects
      • Tech for Creative Education
        • 🧭 Using Idyll
        • 🧭 Using Apparatus
        • 🧭 Using g9.js
      • Literary Jukebox: In Short, the World
        • Italy - Dino Buzzati
        • France - Guy de Maupassant
        • Japan - Hisaye Yamamoto
        • Peru - Ventura Garcia Calderon
        • Russia - Maxim Gorky
        • Egypt - Alifa Rifaat
        • Brazil - Clarice Lispector
        • England - V S Pritchett
        • Russia - Ivan Bunin
        • Czechia - Milan Kundera
        • Sweden - Lars Gustaffsson
        • Canada - John Cheever
        • Ireland - William Trevor
        • USA - Raymond Carver
        • Italy - Primo Levi
        • India - Ruth Prawer Jhabvala
        • USA - Carson McCullers
        • Zimbabwe - Petina Gappah
        • India - Bharati Mukherjee
        • USA - Lucia Berlin
        • USA - Grace Paley
        • England - Angela Carter
        • USA - Kurt Vonnegut
        • Spain-Merce Rodoreda
        • Israel - Ruth Calderon
        • Israel - Etgar Keret
    • Posts
    • Blogs and Talks

    On this page

    • Setting up the Packages
    • What Graphs will we see today?
    • Pies and Fans
      • The fan Plot
      • The Donut Chart
    • Waffle Charts
    • Parliament Charts
    • Trees, Dendrograms, and Circle Packings
      • Dendrograms
      • Circle Packing
    • Your Turn
    • References
    1. Teaching
    2. Data Viz and Analytics
    3. Descriptive Analytics
    4. Parts of a Whole

    Parts of a Whole

    Parts of a Whole

    Pie Charts
    Fan Charts
    Donut Charts
    Grouping
    Stacking
    Circular Bar Charts
    Dot Plots
    Mosaic Charts
    Parliament Charts
    Waffle Charts
    Author

    Arvind V.

    Published

    November 25, 2022

    Modified

    July 6, 2025

    Abstract
    Slices, Portions, Counts, and Aggregates of Data

    “There is no such thing as a”self-made” man. We are made up of thousands of others. Everyone who has ever done a kind deed for us, or spoken one word of encouragement to us, has entered into the make-up of our character and of our thoughts.”

    — George Matthew Adams, newspaper columnist (23 Aug 1878-1962)

    Setting up the Packages

    library(tidyverse)
    library(mosaic)
    library(ggformula)
    library(plotrix) # Fan, Pyramid Chart
    # devtools::install_github("zmeers/ggparliament")
    library(ggparliament) # Parliament Chart
    library(ggpol) # Parliament, Arc-Bar and other interesting charts
    library(data.tree) # Many plots related to heirarchical data
    # install.packages("waffle", repos = "https://cinc.rud.is")
    library(waffle)
    library(tidygraph) # Trees, Dendros, and Circle Packings
    library(ggraph) # Trees, Dendros, and Circle Packings
    library(echarts4r) # Interactive Charts
    
    library(patchwork) # Arrange your plots
    
    ##
    library(tidyplots) # Easily Produced Publication-Ready Plots
    library(tinyplot) # Plots with Base R
    library(tinytable) # Elegant Tables for our data
    
    ## ggplot theme
    library(hrbrthemes)
    hrbrthemes::import_roboto_condensed() # Import Roboto Condensed font for use in charts
    hrbrthemes::update_geom_font_defaults() # Update matching font defaults for text geoms
    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme

    What Graphs will we see today?

    There are a good few charts available to depict things that constitute other bigger things. We will discuss a few of these: Pie, Fan, and Donuts; Waffle and Parliament charts; Trees, Dendrograms, and Circle Packings. (The last three visuals we will explore along with network diagrams in a later module.)

    Pies and Fans

    So let us start with “eating humble pie”: discussing a Pie chart first.

    A pie chart is a circle divided into sectors that each represent a proportion of the whole. It is often used to show percentage, where the sum of the sectors equals 100%.

    The problem is that humans are pretty bad at reading angles. This ubiquitous chart is much vilified in the industry and bar charts that we have seen earlier, are viewed as better options. On the other hand, pie charts are ubiquitous in business circles, and are very much accepted! Do also read this spirited defense of pie charts here. https://speakingppt.com/why-tufte-is-flat-out-wrong-about-pie-charts/

    And we will also see that there is an attractive, and similar-looking alternative, called a fan chart which we will explore here.

    • Using Base R
    • Using ggformula
    • Using echarts4r

    Base R has a simple pie command that does the job. Let’s create some toy data first:

    pie_data <- tibble(
      sales = c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12),
    
      # Labels MUST be character entries for `pie` to work
      labels = c(
        "Blueberry", "Cherry", "Apple", "Boston Cream",
        "Other", "Vanilla Cream"
      )
    )
    pie_data
    pie(
      x = pie_data$sales,
      labels = pie_data$labels, # Character Vector is a MUST
    
      # Pie is within a square of 1 X 1 units
      # Reduce radius if needed to see labels properly
      radius = 0.95,
      init.angle = 90, # First slice starts at 12 o'clock position
    
      # Change the default colours. Comment this and see what happens.
      col = grDevices::hcl.colors(palette = "Plasma", n = 6)
    )
    ABCDEFGHIJ0123456789
    sales
    <dbl>
    labels
    <chr>
    0.12Blueberry
    0.30Cherry
    0.26Apple
    0.16Boston Cream
    0.04Other
    0.12Vanilla Cream
    6 rows

    We create a bar chart or a column chart as appropriate, with bars filled by category. The width parameter is set to 1 so that the bars touch. The bars have a fixed width along the x-axis; the height of the bar varies based on the number we wish to show. Then the coord_polar(theta = "y") converts the bar plot into a pie.

    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    # Using gf_col since we have a count/value column already
    pie_data %>%
      gf_col(sales ~ 1, fill = ~labels, width = 1, color = "black") %>%
      gf_refine(scale_fill_brewer(palette = "Set1"))
    pie_data %>%
      gf_col(sales ~ 1, fill = ~labels, width = 1, color = "black") %>%
      gf_refine(coord_polar(theta = "y")) %>%
      gf_refine(scale_fill_brewer(palette = "Set1"))
    # Using gf_bar since we don't have ready made counts
    gf_bar(
      data = mpg,
      ~1,
      fill = ~drv,
      color = "black", # border for the bars/slices
      width = 1
    ) %>%
      gf_refine(scale_fill_brewer(palette = "Set1"))
    gf_bar(
      data = mpg,
      ~0.5,
      fill = ~drv,
      color = "black", # border for the bars/slices
      width = 1
    ) %>%
      gf_refine(scale_fill_brewer(palette = "Set1")) %>%
      gf_theme(theme_minimal()) %>%
      gf_theme(theme(
        axis.line.y = element_blank(),
        axis.text.y = element_blank(),
        axis.title.y = element_blank()
      )) %>%
      gf_refine(coord_polar(theta = "y"))

    Here is a basic interactive pie chart withecharts4r:

    pie_data <- tibble(
      sales = c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12),
      labels = c(
        "Blueberry", "Cherry", "Apple", "Boston Cream", "Other",
        "Vanilla Cream"
      )
    )
    pie_data %>%
      e_charts(x = labels) %>%
      e_pie(
        serie = sales, clockwise = TRUE,
        startAngle = 90
      ) %>%
      e_legend(list(
        orient = "vertical",
        left = "right"
      )) %>%
      e_tooltip()

    We can add more bells and whistles to the humble-pie chart, and make a Nightingale rosechart out of it:

    pie_data <- tibble(
      sales = c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12),
      labels = c(
        "Blueberry", "Cherry", "Apple", "Boston Cream", "Other",
        "Vanilla Cream"
      )
    )
    pie_data %>%
      e_charts(x = labels) %>%
      e_pie(
        serie = sales, clockwise = TRUE,
        startAngle = 90,
        roseType = "area"
      ) %>% # try "radius"
    
      # Lets move the legend
      e_legend(left = "right", orient = "vertical") %>%
      e_tooltip()
    pie_data %>%
      e_charts(x = labels) %>%
      e_pie(
        serie = sales, clockwise = TRUE,
        startAngle = 90,
        roseType = "radius"
      ) %>%
      # Lets move the legend
      e_legend(left = "right", orient = "vertical") %>%
      e_tooltip()

    For more information and customization look at https://echarts.apache.org/en/option.html#series-pie

    The fan Plot

    The fan plot (from the plotrix package) displays numerical values as arcs of overlapping sectors. This allows for more effective comparison:

    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    plotrix::fan.plot(
      x = pie_data$sales,
      labels = pie_data$labels,
      col = grDevices::hcl.colors(palette = "Lajolla", n = 6), # Try hcl.pals()
      shrink = 0.03,
      # How much to shrink each successive sector
    
      label.radius = 1.15,
      main = "Fan Plot of Ice Cream Flavours",
      # ticks = 360,
      # if we want tick marks on the circumference
    
      max.span = pi
    )

    There is no fan plot possible with echarts4r, as far as I know.

    The Donut Chart

    The donut chart suffers from the same defects as the pie, so should be used with discretion. The donut chart is essentially a gf_rect from ggformula, plotted on a polar coordinate set of of axes:

    • Using ggformula
    • Using echarts4r

    Let us make some toy data:

    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    # Data
    df <- tibble(
      group = LETTERS[1:3],
      value = c(25, 20, 35)
    )
    
    df <-
      df %>%
      dplyr::mutate(
        fraction = value / sum(value), # percentages
        ymax = cumsum(fraction), # cumulative percentages
        ymin = lag(ymax, 1, default = 0),
        # bottom edge of each
        label = paste0(group, "\n value: ", value),
        labelPosition = (ymax + ymin) / 2 # labels midway on arcs
      )
    
    df
    df %>%
      # gf_rect() formula: ymin + ymax ~ xmin + xmax
      # Bars with varying thickness (y) proportional to data
      # Fixed length x (2 to 4)
      gf_rect(ymin + ymax ~ 2 + 4,
        fill = ~group, colour = "black"
      ) %>%
      gf_label(labelPosition ~ 3.5,
        label = ~label,
        size = 4
      ) %>%
      # When switching to polar coords:
      # x maps to radius
      # y maps to angle theta
      # so we create a "hole" in the radius, in x
      gf_refine(coord_polar(
        theta = "y",
        direction = 1
      )) %>%
      # Up to here will give us a pie chart
    
      # Now to create the hole
      # try to play with the "0"
      # Recall x = [2,4]
      gf_refine(xlim(c(-2, 5)), scale_fill_brewer(palette = "Spectral")) %>%
      gf_theme(theme = theme_void()) %>%
      gf_theme(legend.position = "none")
    ABCDEFGHIJ0123456789
    group
    <chr>
    value
    <dbl>
    fraction
    <dbl>
    ymax
    <dbl>
    ymin
    <dbl>
    label
    <chr>
    A250.31250.31250.0000A\n value: 25
    B200.25000.56250.3125B\n value: 20
    C350.43751.00000.5625C\n value: 35
    3 rows | 1-6 of 7 columns

    The donut chart is simply a variant of the pie chart in echarts4r:

    df <- tibble(
      group = LETTERS[1:3],
      value = c(25, 20, 35)
    )
    
    df <-
      df %>%
      dplyr::mutate(
        fraction = value / sum(value), # percentages
        ymax = cumsum(fraction), # cumulative percentages
        ymin = lag(ymax, 1, default = 0),
        # bottom edge of each
        label = paste0(group, "\n value: ", value),
        labelPosition = (ymax + ymin) / 2 # labels midway on arcs
      )
    df
    df %>%
      e_charts(x = group, width = 400) %>%
      e_pie(
        serie = value,
        clockwise = TRUE,
        startAngle = 90,
        radius = c("50%", "70%")
      ) %>%
      e_legend(left = "right", orient = "vertical") %>%
      e_tooltip()
    ABCDEFGHIJ0123456789
    group
    <chr>
    value
    <dbl>
    fraction
    <dbl>
    ymax
    <dbl>
    ymin
    <dbl>
    A250.31250.31250.0000
    B200.25000.56250.3125
    C350.43751.00000.5625
    3 rows | 1-5 of 7 columns

    Waffle Charts

    Waffle charts are often called “square pie charts” !

    Here we will need to step outside of ggformula and get into ggplot itself momentarily. (Always remember that ggformula is a simplified and intuitive method that runs on top of ggplot.) We will use the waffle package.

    # install.packages("waffle", repos = "https://cinc.rud.is")
    library(waffle)
    
    # Data
    df <- tibble(
      group = LETTERS[1:3],
      value = c(25, 20, 35)
    )
    df
    ABCDEFGHIJ0123456789
    group
    <chr>
    value
    <dbl>
    A25
    B20
    C35
    3 rows
    # Waffle plot
    # Using ggplot, sadly not yet ggformula
    
    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    ggplot(df, aes(fill = group, values = value)) +
      geom_waffle(
        n_rows = 8,
        size = 0.33,
        colour = "white",
        na.rm = TRUE
      ) +
      scale_fill_manual(
        name = NULL,
        values = c("#BA182A", "#FF8288", "#FFDBDD"),
        labels = c("A", "B", "C")
      ) +
      coord_equal() +
      theme_void()

    Parliament Charts

    The package ggpol offers an interesting visualization in the shape of a array of “seats” in a parliament. (There is also a package called ggparliament which in my opinion is a bit cumbersome, having a two-step procedure to convert data into “parliament form” etc. )

    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    # Same toy dataset
    # df <- tibble(group = LETTERS[1:3],
    #                  value = c(25, 20, 35))
    #
    # Parliament Plot
    ggplot(df) +
      ggpol::geom_parliament(
        aes(
          seats = value,
          fill = group
        ),
        r0 = 2, # inner radius
        r1 = 4 # Outer radius
      ) +
      scale_fill_manual(
        name = NULL,
        values = c("#BA182A", "#FF8288", "#FFDBDD"),
        labels = c("A", "B", "C")
      ) +
      coord_equal() +
      theme_void()

    Trees, Dendrograms, and Circle Packings

    There are still more esoteric plots to explore, if you are hell-bent on startling people ! There is an R package called ggraph, that can do these charts, and many more:

    ggraph is an extension of ggplot2 aimed at supporting relational data structures such as networks, graphs, and trees. While it builds upon the foundation of ggplot2 and its API it comes with its own self-contained set of geoms, facets, etc., as well as adding the concept of layouts to the grammar.

    We will explore these charts when we examine network diagrams. For now, we can quickly see what these diagrams look like. Although the R-code is visible to you, it may not make sense at the moment!

    Dendrograms

    From the R Graph Gallery Website :

    Dendrograms can be built from:

    • Hierarchical dataset: think about a CEO managing team leads managing employees and so on.

    • Clustering result: clustering divides a set of individuals in group according to their similarity. Its result can be visualized as a tree.

    # create an edge list data frame giving the hierarchical structure of your individuals
    d1 <- tibble(from = "origin", to = paste("group", seq(1, 5), sep = ""))
    d2 <- tibble(from = rep(d1$to, each = 5), to = paste("subgroup", seq(1, 25), sep = "_"))
    edges <- rbind(d1, d2)
    edges
    ABCDEFGHIJ0123456789
    from
    <chr>
    to
    <chr>
    origingroup1
    origingroup2
    origingroup3
    origingroup4
    origingroup5
    group1subgroup_1
    group1subgroup_2
    group1subgroup_3
    group1subgroup_4
    group1subgroup_5
    Next
    123
    Previous
    1-10 of 30 rows
    # Create a graph object
    mygraph1 <- tidygraph::as_tbl_graph(edges)
    mygraph1
    # A tbl_graph: 31 nodes and 30 edges
    #
    # A rooted tree
    #
    # Node Data: 31 × 1 (active)
       name      
       <chr>     
     1 origin    
     2 group1    
     3 group2    
     4 group3    
     5 group4    
     6 group5    
     7 subgroup_1
     8 subgroup_2
     9 subgroup_3
    10 subgroup_4
    # ℹ 21 more rows
    #
    # Edge Data: 30 × 2
       from    to
      <int> <int>
    1     1     2
    2     1     3
    3     1     4
    # ℹ 27 more rows
    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    # Basic tree
    ggraph(mygraph1,
      layout = "dendrogram",
      circular = TRUE
    ) +
      geom_edge_diagonal() +
      geom_node_point(size = 3) +
      geom_node_label(aes(label = name),
        size = 3, repel = TRUE
      ) +
      theme(aspect.ratio = 1)

    # create a data frame
    data <- tibble(
      level1 = "CEO",
      level2 = c(rep("boss1", 4), rep("boss2", 4)),
      level3 = paste0("mister_", letters[1:8])
    )
    
    # transform it to a edge list!
    edges_level1_2 <- data %>%
      select(level1, level2) %>%
      unique() %>%
      rename(from = level1, to = level2)
    
    edges_level2_3 <- data %>%
      select(level2, level3) %>%
      unique() %>%
      rename(from = level2, to = level3)
    
    edge_list <- rbind(edges_level1_2, edges_level2_3)
    edge_list
    ABCDEFGHIJ0123456789
    from
    <chr>
    to
    <chr>
    CEOboss1
    CEOboss2
    boss1mister_a
    boss1mister_b
    boss1mister_c
    boss1mister_d
    boss2mister_e
    boss2mister_f
    boss2mister_g
    boss2mister_h
    1-10 of 10 rows
    mygraph2 <- as_tbl_graph(edge_list)
    mygraph2
    # A tbl_graph: 11 nodes and 10 edges
    #
    # A rooted tree
    #
    # Node Data: 11 × 1 (active)
       name    
       <chr>   
     1 CEO     
     2 boss1   
     3 boss2   
     4 mister_a
     5 mister_b
     6 mister_c
     7 mister_d
     8 mister_e
     9 mister_f
    10 mister_g
    11 mister_h
    #
    # Edge Data: 10 × 2
       from    to
      <int> <int>
    1     1     2
    2     1     3
    3     2     4
    # ℹ 7 more rows
    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    # Now we can plot that
    ggraph(mygraph2, layout = "dendrogram", circular = FALSE) +
      geom_edge_diagonal() +
      geom_node_point(size = 3) +
      geom_node_label(aes(label = name), repel = TRUE) +
      theme_void()

    Circle Packing

    graph_flare <- tbl_graph(flare$vertices, flare$edges)
    graph_flare
    # A tbl_graph: 252 nodes and 251 edges
    #
    # A rooted tree
    #
    # Node Data: 252 × 3 (active)
       name                                            size shortName            
       <chr>                                          <dbl> <chr>                
     1 flare.analytics.cluster.AgglomerativeCluster    3938 AgglomerativeCluster 
     2 flare.analytics.cluster.CommunityStructure      3812 CommunityStructure   
     3 flare.analytics.cluster.HierarchicalCluster     6714 HierarchicalCluster  
     4 flare.analytics.cluster.MergeEdge                743 MergeEdge            
     5 flare.analytics.graph.BetweennessCentrality     3534 BetweennessCentrality
     6 flare.analytics.graph.LinkDistance              5731 LinkDistance         
     7 flare.analytics.graph.MaxFlowMinCut             7840 MaxFlowMinCut        
     8 flare.analytics.graph.ShortestPaths             5914 ShortestPaths        
     9 flare.analytics.graph.SpanningTree              3416 SpanningTree         
    10 flare.analytics.optimization.AspectRatioBanker  7074 AspectRatioBanker    
    # ℹ 242 more rows
    #
    # Edge Data: 251 × 2
       from    to
      <int> <int>
    1   221     1
    2   221     2
    3   221     3
    # ℹ 248 more rows
    ggplot2::theme_set(new = theme_classic(base_family = "Roboto Condensed")) # Set consistent graph theme
    
    set.seed(1)
    ggraph(graph_flare, "circlepack", weight = size) +
      geom_node_circle(aes(fill = as_factor(depth)), size = 0.25, n = 50) +
      coord_fixed() +
      scale_fill_brewer(name = "Depth", palette = "Set1")

    Your Turn

    1. Use the penguins dataset from the palmerpenguins package and plot pies, fans, and donuts as appropriate.
    2. Look at the whigs and highschool datasets in the package ggraph. Plot Pies, Fans and if you are feeling confident, Trees, Dendrograms, and Circle Packings as appropriate for these.

    References

    1. Iaroslava.2020. A Parliament Diagram in R, https://datavizstory.com/a-parliament-diagram-in-r/
    2. Venn Diagrams in R, Venn diagram in ggplot2 | R CHARTS (r-charts.com)
    3. Generate icon-array charts without code! https://iconarray.com
    R Package Citations
    Package Version Citation
    data.tree 1.1.0 Glur (2023)
    echarts4r 0.4.5 Coene (2023)
    ggparliament 3.1.6 Hickman, Meers, and Leeper (2024)
    ggpol 0.0.7 Tiedemann (2020)
    ggraph 2.2.1 Pedersen (2024a)
    plotrix 3.8.4 J (2006)
    tidygraph 1.3.1 Pedersen (2024b)
    waffle 1.0.2 Rudis and Gandy (2023)
    Coene, John. 2023. Echarts4r: Create Interactive Graphs with “Echarts JavaScript” Version 5. https://doi.org/10.32614/CRAN.package.echarts4r.
    Glur, Christoph. 2023. data.tree: General Purpose Hierarchical Data Structure. https://doi.org/10.32614/CRAN.package.data.tree.
    Hickman, Robert, Zoe Meers, and Thomas J. Leeper. 2024. ggparliament: Parliament Plots. https://github.com/zmeers/ggparliament.
    J, Lemon. 2006. “Plotrix: A Package in the Red Light District of r.” R-News 6 (4): 8–12.
    Pedersen, Thomas Lin. 2024a. ggraph: An Implementation of Grammar of Graphics for Graphs and Networks. https://doi.org/10.32614/CRAN.package.ggraph.
    ———. 2024b. tidygraph: A Tidy API for Graph Manipulation. https://doi.org/10.32614/CRAN.package.tidygraph.
    Rudis, Bob, and Dave Gandy. 2023. waffle: Create Waffle Chart Visualizations. https://doi.org/10.32614/CRAN.package.waffle.
    Tiedemann, Frederik. 2020. ggpol: Visualizing Social Science Data with “ggplot2”. https://doi.org/10.32614/CRAN.package.ggpol.
    Back to top

    Citation

    BibTeX citation:
    @online{v.2022,
      author = {V., Arvind},
      title = {\textless Iconify-Icon
        Icon=“ic:round-Pie-Chart-Outline”\textgreater\textless/Iconify-Icon\textgreater{}
        {Parts} of a {Whole}},
      date = {2022-11-25},
      url = {https://av-quarto.netlify.app/content/courses/Analytics/Descriptive/Modules/60-PartWhole/},
      langid = {en},
      abstract = {Slices, Portions, Counts, and Aggregates of Data}
    }
    
    For attribution, please cite this work as:
    V., Arvind. 2022. “<Iconify-Icon Icon=‘ic:round-Pie-Chart-Outline’></Iconify-Icon> Parts of a Whole.” November 25, 2022. https://av-quarto.netlify.app/content/courses/Analytics/Descriptive/Modules/60-PartWhole/.
    Proportions
    Evolution and Flow

    License: CC BY-SA 2.0

    Website made with ❤️ and Quarto, by Arvind V.

    Hosted by Netlify .