C3 条形图宽度工作不正常

C3 bar chart width is not working properly

你好,我正在尝试使用 C3 js 构建条形图,但我不知道由于某种原因宽度在它工作正常之前没有正确设置,我只改变了颜色但它坏了一些理由。这是我的代码:

var chart1 = c3.generate({
                size: {
                    height: 400,
                },
                data: {
                    type: 'bar',
                    json: [
                        { 'indicator': 'data1', 'Subject1': 100 },
                        { 'indicator': 'data2', 'Subject2': 90 },
                        { 'indicator': 'data3', 'Subject3': 66 },
                        { 'indicator': 'data4', 'Subject4': 50 },
                        { 'indicator': 'data5', 'Subject5': 50 },

                    ],
                    color: function (color, d) {
                        if (d.id && d.value) {
                            if (d.value<=40) {
                                return 'red';
                            }
                            else if (d.value<=70) {
                                return 'orange';
                            }
                            else {
                                return 'limegreen';
                            }
                        }
                    },
                    keys: {
                        x: 'indicator',
                        value: ['Subject1','Subject2','Subject3','Subject4','Subject5']
                    }
                }, 
                legend:{hide:true},
                axis: {
                    x: {
                        type: 'category',
                        tick: {
                            rotate: -55,
                            multiline: true

                        },
                        height: 190
                    },

                    y: {
                        show: false,
                        ticks: 3, // line added
                        padding: { top: 5, bottom: 0 },
                    }
                },
                bar: {
                    width: {
                        ratio: 0.5    
                    }
                },
                bindto: '#chart1'
            });

我得到的结果是,正如您在图像中看到的那样,宽度没有填充该条的颜色。

您正在设置 5 个不同的数据系列(主题 1-​​5),因此它沿 x 轴在 'indicator'(数据 1-5)的每个值处保留 space 5条,但您只为数据中每个数据点的一个系列设置一个值。

           { 'indicator': 'data1', 'Subject1': 100 },
           { 'indicator': 'data2', 'Subject2': 90 },
           { 'indicator': 'data3', 'Subject3': 66 },
           { 'indicator': 'data4', 'Subject4': 50 },
           { 'indicator': 'data5', 'Subject5': 50 },

我怀疑 Subject 应该是一个系列,所以在只有一个数据系列 Subject 的情况下试试这个,然后条形图沿着 x 轴在每个 'indicator' 值处占据宽度的一半。

  { 'indicator': 'data1', 'Subject': 100 },
  { 'indicator': 'data2', 'Subject': 90 },
  { 'indicator': 'data3', 'Subject': 66 },
  { 'indicator': 'data4', 'Subject': 50 },
  { 'indicator': 'data5', 'Subject': 50 },


keys: {
   x: 'indicator',
   value: ['Subject']
}

http://jsfiddle.net/68pgvsbh/5/

如果您出于某种原因确实想保留不同的命名主题系列,您的替代方法是将它们添加为堆叠组

  groups: [["Subject1", "Subject2", "Subject3", "Subject4", "Subject5"]],