我正在努力完成这件事:
我有一个4系列的堆叠柱图表,我希望用户能够点击堆叠柱(而不是单个列,整个堆叠柱)来选择这些点,并更改宽度,颜色,添加dataLabels所选的堆叠柱。这是显示有关所选堆栈列的更详细信息所必需的。
该系列如下所示:
series: [{
name: 'd',
data: [120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000],
color: '#ffffff'
}, {
name: 'c',
data: [40000, 67000, 94000, 121000, 148000, 175000, 202000, 229000, 256000, 283000, 310000, 337000, 364000, 391000, 418000],
color: '#bde0db'
}, {
name: 'b',
data: [75000, 73000, 71000, 69000, 67000, 65000, 63000, 61000, 59000, 57000, 55000, 53000, 51000, 49000, 47000],
color: '#a7dcf0'
}, {
name: 'a',
data: [450000, 425000, 400000, 375000, 350000, 325000, 300000, 275000, 250000, 225000, 200000, 175000, 150000, 125000, 100000],
color: '#8dbad2'
}]
jsfiddle:http://jsfiddle.net/XFDdz/6/ (为此感谢Dmonix!)
有没有办法做到这一点?如果是这样的话,是怎么做的?
编辑:根据我在这里看到的,我想要的部分是可行的(堆叠列上的宽度不同):http://www.fusioncharts.com/demos/gallery/#marimekko-charts和http://highcharts.uservoice.com/forums/55896-general/suggestions/2303560-multi-dimensional-column-charts
如果有人能为我指出宽度问题的正确方向,以及剩余的样式和为选定的堆叠列点添加数据标签,我将不胜感激!
编辑2:我想出了如何设置给定点的颜色,还需要知道如何设置宽度。下面提到的系列中的解决方案:
series: [{
name: 'd',
data: [120000, 120000, 120000, {name: 'point 1',color: '#df4a92',y:120000,pointWidth:100}, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000],
color: '#ffffff'
}, {
name: 'c',
data: [40000, 67000, 94000, {name: 'point 1',color: '#81c6bd',y:121000,pointWidth:100}, 148000, 175000, 202000, 229000, 256000, 283000, 310000, 337000, 364000, 391000, 418000],
color: '#bde0db'
}, {
name: 'b',
data: [75000, 73000, 71000, {name: 'point 1',color: '#58c3eb',y:69000,pointWidth:100}, 67000, 65000, 63000, 61000, 59000, 57000, 55000, 53000, 51000, 49000, 47000],
color: '#a7dcf0'
}, {
name: 'a',
data: [450000, 425000, 400000, {name: 'point 1',color: '#2e87b7',y:375000,pointWidth:100}, 350000, 325000, 300000, 275000, 250000, 225000, 200000, 175000, 150000, 125000, 100000],
color: '#8dbad2'
}]
忽略数据集中的pointWidth,它什么也不做。
编辑3:我可以通过直接操作SVG元素来设置宽度,但这是一个糟糕的错误,我真的希望通过API来解决这个问题,并且这个方法不会调整其余列的大小/位置:
$(".highcharts-series.highcharts-tracker rect[fill='#2e87b7']").attr('width',175)
$(".highcharts-series.highcharts-tracker rect[fill='#58c3eb']").attr('width',175)
$(".highcharts-series.highcharts-tracker rect[fill='#81c6bd']").attr('width',175)
$(".highcharts-series.highcharts-tracker rect[fill='#df4a92']").attr('width',175)
发布于 2013-09-06 13:28:27
最后的解决方案是创建与列height和position匹配的新SVG元素(使用Highcharts.renderer),然后将新元素重新定位到实际图形上。然后,我根据新元素中的data-rel标记和数据标签中匹配的css类名重新定位数据标签。
唯一(可接受的)缺点是该列与上一列和下一列重叠。
由于无法通过Highcharts API完成此操作,因此我接受此答案。
https://stackoverflow.com/questions/15820867
复制相似问题