【问题标题】:How to get rounded corner in c3js bar charts如何在 c3js 条形图中获得圆角
【发布时间】:2015-03-20 02:10:09
【问题描述】:

看起来像 nvd3、c3js 这样的基于 d3 的图表库都不支持条形图的圆角。

我需要条形图中的条形如下所示,我的项目带有渐变和圆角。

任何 hack 或配置可以在 c3js 中实现这一点?

【问题讨论】:

  • 如果使用 d3.js 系列,条形图的每个条形图必须是一个 'rect' 元素,并且 rect 元素具有 'rx' 和 'ry' 属性。您可以设置这些属性来创建圆角。
  • 不,使用的svg元素是c3js的PATH

标签: javascript d3.js charts c3.js


【解决方案1】:

需要重写c3js函数generateDrawBar并提供获取圆角的逻辑,一般c3js路径元素由四个点组成,对应条形的四个角。

现在您需要提供逻辑,在标准杆的左上角和右上角有多个点,以平滑杆角。

还有几种情况:-

1) 堆积条形图的圆角。

2) 负值的圆角,指向下方或相反方向的条形。

rounded corner bars jsFiddle

圆角 c3js 条形图快照

var chart = c3.generate({
bindto: '#chart',
padding: {
    left: 200,
    right: 100,
    top: 20,
    bottom: 20
},
data: {
    x: 'x',
    labels: true,
    columns: [
        ['data1',40, 30, 200, 100, 400, 150, 250, 50, 100, 250,67,190,48,123,76,54,254],
        ['x','Travel and Hospitality','Life Science and Pharma', 'Saas and Cloud', 'Hi-tech Manufacturing', 'Software', 'Business Services', 'Govt/Public Sector', 'Energy', 'Manufacturing', 'Healthcare','Media','Internet','Retail','Biotech','Automobile','Consumer Goods','Financial Services']
    ],
    type: 'bar'
},
axis: {
    rotated: true,
    x: {
        type: 'category',
        tick:{
            multiline: false
        }
    }
},
legend: {
    show: false
},
tooltip: {
    show: false
},
bar: {
    width: {
        ratio: .7
    },
    spacing: 2
}
});

【讨论】:

  • 好极了。非常感谢。
  • 我添加了堆叠条形图的案例,并将解决方案更新为d3.v4。我有一个问题。工具提示仅显示在中间条上。看到这个 jsfiddle example.
  • 嘿,这个解决方案很有魅力,谢谢。我想扩展功能并使所有角落都变圆。你能指导我如何实现这一目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
相关资源
最近更新 更多