C3.js donut chartデフォルト大きい順をデータならび通りにする

Donut chart with the C3.js adapter

by shigetak

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.3.0/c3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.12/d3.min.js"></script>
<link rel="stylesheet" href="http://c3js.org/css/c3-b03125fa.css">
<div id="chart" ></div>
デフォルト大きい順をデータならび通りにする

CSS

.c3-chart-arc text {
    fill: #333;
    font-size: 15px;
}
.c3-chart-arc path {
    stroke: white;
    stroke-width: 2px;
}
#chart{
  width: 200px;
  height: 200px;
}

JavaScript

var loc = d3.locale({
  "decimal": ",",
  "thousands": ".",
  "grouping": [3],
  "currency": ["R$", ""],
  "dateTime": "%a %b %e %X %Y",
  "date": "%m/%d/%Y",
  "time": "%H:%M:%S",
  "periods": ["AM", "PM"],
  "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  "months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
  "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
});
var fmtPercent = loc.numberFormat('.1%');
var fmtNumber = loc.numberFormat('d');

var chart = c3.generate({
    padding: {
        top: 0,
        right: 0,
        bottom: 0,
        left: 0,
    },
    data: {
        columns: [
            ['Vermelho', 17],
            ['Amarelo', 12],
            ['Verde', 83],
        ],
        colors: {
            Vermelho: '#ef6544',
            Amarelo: '#FFE500',
            Verde: '#8CE08C'
        },
        order :null,// デフォルト大きい順をデータならび通りにする
        type : 'donut'
    },
    donut: {
        title: "Infrações",
        label: {
        	threshold: 0.03,
            format: function (value, ratio, id) {
                return d3.format('%')(ratio);
            }
        },
        width: 10
    },
    tooltip: {
        format: {
            value: function (value, ratio, id) {
                return value + ' (' + d3.format('%')(ratio) + ')';
            }
        }
    },
    legend: {
        show: false
    }
    
});