Bar chart columns not grouping in D3/C3

617 views Asked by At

I am using D3 (technically C3) to try to create a grouped bar chart.

The chart I am trying to make would be a bar chart of Donations per occupation, grouped by PaymentType. For the life of me I can't figure out how to do the grouping.

This is a code I have so far. It produces everything I want, except the grouping by PaymentType:

var x_values = ["Occupation", "DENTIST", "PROGRAMMER/ANALYST", "CORPORATE SECRETARY", "PHYSICIAN", "PROFESSOR", "PRESIDENT", "PROFESSOR", "MANAGER", "CORPORATE SECRETARY", "PRESIDENT", "PHYSICIAN", "DENTIST", "PROGRAMMER/ANALYST", "CO-OWNER", "MANAGER", "CO-OWNER"]
var y_values = ["Donation", 11340, 12335, 3259, 18041, 10415, 35900, 14660, 21985, 2950, 15110, 16705, 370, 22255, 13055, 4000, 20740]
var z_values = ["PaymentType", "MONETARY", "NON-MONETARY", "NON-MONETARY", "MONETARY", "MONETARY", "NON-MONETARY", "NON-MONETARY", "MONETARY", "MONETARY", "MONETARY", "NON-MONETARY", "NON-MONETARY", "MONETARY", "MONETARY", "NON-MONETARY", "NON-MONETARY"]

var chart = c3.generate({
    data: {columns: [y_values],
            type: 'bar',
            groups: [z_values],},
    axis: {x: 
            {type: 'category',
            categories: x_values}}
});
1

There are 1 answers

0
potatopeelings On

Something like this?

var chart = c3.generate({
    data: {
        columns: [
            ['MONETARY', 11340, 3259, 10415, 14660, 2950, 16705, 22255, 4000],
            ['NON-MONETARY', 12335, 18041, 35900, 21985, 15110, 370, 13055, 20740]
        ],
        type: 'bar',
        groups: [
            ['MONETARY','NON-MONETARY']
        ]
    },
    axis: {
        x: {
            type: 'Occupation',
            categories: ['DENTIST', 'PROGRAMMER/ANALYST', 'CORPORATE SECRETARY', 'PHYSICIAN', 'PROFESSOR', 'PRESIDENT', 'MANAGER', 'CO-OWNER']
        }
    }    
});

Fiddle - http://jsfiddle.net/63cp42Lv/

If you want to make the bars appear side by side instead of stacked, just remove the groups property.