Javascript Highstock双yAxis-传奇可以拆分吗?

Javascript Highstock双yAxis-传奇可以拆分吗?,javascript,highcharts,Javascript,Highcharts,当yAxis在highstock中拆分时,您能为每个yAxis提供单独的图例吗?我正在使用一个堆叠条形图,在两个Yax上运行相同的数据系列,这在顶部的图例中是重复的,这并不理想-可以将图例一分为二,将第二个放在第二个Yax的下方吗 如果有人能就下面的配置提供建议,我将非常感激-我附上了一个屏幕抓图,以便您可以看到它目前的样子-我希望在下方的图例上显示第二个绿色的“直接消费”+“收费”+“出口”。 非常感谢 //Highstock分割堆叠柱形图 Highstock.setOptions({ 颜色

当yAxis在highstock中拆分时,您能为每个yAxis提供单独的图例吗?我正在使用一个堆叠条形图,在两个Yax上运行相同的数据系列,这在顶部的图例中是重复的,这并不理想-可以将图例一分为二,将第二个放在第二个Yax的下方吗

如果有人能就下面的配置提供建议,我将非常感激-我附上了一个屏幕抓图,以便您可以看到它目前的样子-我希望在下方的图例上显示第二个绿色的“直接消费”+“收费”+“出口”。 非常感谢

//Highstock分割堆叠柱形图
Highstock.setOptions({
颜色:['FB654B'、'FFBE6B'、'2FC099'、'2FC099'、'FF8954'、'FCEA6E']
});
Highstock.stockChart('container2'{
图表:{
类型:“列”
},
标题:{
正文:“能量平衡历史”
},
xAxis:{
键入:“日期时间”
},
图例:{
布局:“水平”,
对齐:'居中',
垂直排列:“顶部”,
启用:对,
x:0,,
y:50
},
导航器:{
身高:30,
系列:{
数据:
}
},
范围选择器:{
按钮:[{
键入:“周”,
计数:1,
文本:“1w”
}, {
键入:“周”,
计数:2,
文本:“2w”
}, {
键入:“月”,
计数:1,
文字:“1m”
}, {
键入:“全部”,
文字:“全部”
}],
inputEnabled:true,//它只支持天
选定日期:1/月
},
亚克斯:[{
标签:{
对齐:“右”,
x:-3
},
分:0,,
标题:{
正文:“消耗能量(kWh)”
},
身高:50%,
//联系电话:1,,
线宽:2,
堆叠标签:{
启用:对,
格式化程序:函数(){
返回Highcharts.numberFormat(这个总数为2);
},
//allowOverlap:是的,
风格:{
fontWeight:'粗体',
颜色:(Highcharts.theme&&Highcharts.theme.textColor)| |“灰色”
}
}
},{
标签:{
对齐:“右”,
x:-3
},    
分:0,,
标题:{
正文:“发电能量(kWh)”
},
前三名:“53%,
身高:50%,
链接到:0,
线宽:2,
偏移量:0,
//链接到:0,
堆叠标签:{
启用:对,
格式化程序:函数(){
返回Highcharts.numberFormat(这个总数为2);
},
//allowOverlap:是的,
风格:{
fontWeight:'粗体',
颜色:(Highcharts.theme&&Highcharts.theme.textColor)| |“灰色”
}
}
}],
工具提示:{
//headerFormat:'消耗总量:{point.stackTotal}
生成总量:{point.stackTotal[1]}
, pointFormat:“{series.name}:{point.y:.2f}” }, 打印选项:{ 专栏:{ 堆叠:“正常” } }, 系列:[{ 名称:“导入”, 雅克斯:0, 数据: }, { 姓名:"出院",, 雅克斯:0, 数据:, }, { 名称:“直接消费”, 雅克斯:0, 数据: }, { 名称:“直接消费”, 亚克西斯:1,, 数据: }, { 姓名:‘押记’, 亚克西斯:1,, 数据: }, { 名称:“导出”, 亚克西斯:1,, 数据: }] });
默认情况下,图例无法拆分,但您可以使用自定义代码重新定位图例项目:

var H = Highcharts;

H.wrap(H.Legend.prototype, 'positionItems', function(proceed) {
    proceed.apply(this, Array.prototype.slice.call(arguments, 1));

    var items = this.allItems;

    items.forEach(function(item, i) {

        if (i > 1) {
            item.legendGroup.attr({
                translateY: 215,
                translateX: item.legendGroup.translateX - this.legendWidth / 4
            });
        } else {
            item.legendGroup.attr({
                translateX: item.legendGroup.translateX + this.legendWidth / 4
            });
        }
    }, this);
});
现场演示:


医生:

谢谢ppotaczek-这非常有效!感谢你在这方面的帮助。丹
var H = Highcharts;

H.wrap(H.Legend.prototype, 'positionItems', function(proceed) {
    proceed.apply(this, Array.prototype.slice.call(arguments, 1));

    var items = this.allItems;

    items.forEach(function(item, i) {

        if (i > 1) {
            item.legendGroup.attr({
                translateY: 215,
                translateX: item.legendGroup.translateX - this.legendWidth / 4
            });
        } else {
            item.legendGroup.attr({
                translateX: item.legendGroup.translateX + this.legendWidth / 4
            });
        }
    }, this);
});