Donnut Chart

A doughnut plot displays the value of several entities, really often to show proportions that must add up to 100%. It is very close from a pie plot and thus suffers the same drawbacks. It is thus better to avoid using it, why not replacing it with a barplot or lollipop plot?


Example Color Themes

Example Fonts



Show Code

Tools

<head>
  <!-- Include the CanvasXpress library in your HTML file -->
  <link rel="stylesheet" href="https://www.canvasxpress.org/dist/canvasXpress.css" type="text/css"/>
  <script src="https://www.canvasxpress.org/dist/canvasXpress.min.js"></script>
</head>

<body>

  <!-- Create a canvas element for the chart with the desired dimensions -->
  <div>
    <canvas id="canvasId" width="600" height="600"></canvas>
  </div>


  <!-- Create a script to initialize the chart -->
  <script>

    // Create the data for the graph
    var data = {
       "x" : {
          "Color" : ["red","blue","green","grey","red","blue","green","grey","red","blue","green","grey","red","blue","green"],
          "Month" : ["Jan","Feb","Feb","Feb","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],
          "Quarter" : ["1st","1st","1st","1st","1st","1st","2nd","2nd","2nd","3rd","3rd","3rd","4th","4th","4th"],
          "Week" : [null,"Week 1","Week 2","Week 3","Week 4",null,null,null,null,null,null,null,null,null,null]
       },
       "y" : {
          "data" : [
            [3.5,1.2,0.8,0.6,0.5,1.7,1.1,0.8,0.3,0.7,0.6,0.1,0.5,0.4,0.3]
          ],
          "smps" : ["Sales1","Sales2","Sales3","Sales4","Sales5","Sales6","Sales7","Sales8","Sales9","Sales10","Sales11","Sales12","Sales13","Sales14","Sales15"],
          "vars" : ["Sales"]
       }
    }
    
    
    // Create the configuration for the graph
    var config = {
       "circularArc":"360",
       "circularRotate":"0",
       "circularType":"sunburst",
       "colorBy":"Quarter",
       "colorScheme":"RdYlBu",
       "graphType":"Circular",
       "hierarchy":[
          "Quarter",
          "Month"
       ],
       "objectBorderColor":"rgb(0,0,0)",
       "showTransition":false,
       "title":"Donnut with two levels",
       "transitionStep":"50",
       "transitionTime":"1500"
    }
    

    // Call the CanvasXpress function to create the graph
    var cX = new CanvasXpress("canvasId", data, config);


  </script>

</body>
library(canvasXpress)
y=read.table("https://www.canvasxpress.org/data/cX-sunburst-dat.txt", header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
x=read.table("https://www.canvasxpress.org/data/cX-sunburst-smp.txt", header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
canvasXpress(
  data=y,
  smpAnnot=x,
  circularArc=360,
  circularRotate=0,
  circularType="sunburst",
  colorBy="Quarter",
  colorScheme="RdYlBu",
  graphType="Circular",
  hierarchy=list("Quarter", "Month"),
  objectBorderColor="rgb(0,0,0)",
  showTransition=FALSE,
  title="Donnut with two levels",
  transitionStep=50,
  transitionTime=1500
)