我想将图例的底部与X轴对齐。
我在想这样的事情:
var legend= chart.legend;
var legend.Y= Chart.plotTop + Chart.plotHeight - legend.legendHeight;
但是,对象图例没有属性Y.你能提供一些示例代码或给出一些提示吗?
我还想将图表标题与左Y轴标签对齐。如何获得宽度或属性" left"顶部y轴标签?
图表将由用户生成,他们应该可以根据需要格式化图表(例如,使可见或隐藏轴类别标题)。因此,我不想使用固定值,因为一旦它可以正常工作,一旦没有。
由于
链接到图片:http://www.fotosik.pl/pokaz_obrazek/pelny/12dadc5d85228db9.html
答案 0 :(得分:3)
<强>被修改强>
至于轴: 正确的标题很简单 - 向左移动10。 左派更难。您可以使用顶部刻度线(其x位置)和该刻度线的标签长度。
在图例对齐时,您可以使用翻译并从下面示例中显示的变量中获取图表的大小(chart.plotTop + chart.plotHeight - legend.legendHeight)
示例:http://jsfiddle.net/0ur3L0pL/8/
$(function () {
var primText = 'primary',
secoText = 'secondary',
hidden = $('<span id="hidden" style="display:none; ont-size:11px; "></span>');
$('body').append(hidden);
$('#container').highcharts({
chart: {
type: 'column',
marginTop: 80
},
title: {
text: 'Monthly Average Temperature',
x: -60 //center
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: [{
title: {
text: primText,
rotation: 0,
align: 'high',
y: -25
}
}, {
title: {
text: secoText,
rotation: 0,
align: 'high',
y: -25
},
opposite: true
}],
tooltip: {
valueSuffix: '°C'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'bottom',
borderWidth: 0
},
series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5],
pointWidth: 10
}, {
name: 'New York',
data: [0.8, 5.7, 11.3, 17.0, 220.0, 24.8, 24.1, 20.1],
pointWidth: 5,
yAxis: 1
}]
},
function (chart) {
var legend = chart.legend,
group = legend.group,
x = group.translateX;
group.translate(x, chart.plotTop + chart.plotHeight - legend.legendHeight);
var ticks = chart.yAxis[0].ticks,
pos = chart.yAxis[0].tickPositions,
top = pos[pos.length - 1].toString(),
topX = ticks[top].label.xy.x,
topString = ticks[top].label.element.innerHTML;
hidden.text(topString);
chart.yAxis[0].update({
title: {
x: topX - hidden.width() - 8
}
});
chart.yAxis[1].update({
title: {
x: -10
}
});
});
});
答案 1 :(得分:2)
实际上,图例有y
属性。
可能导致您混淆的是,当您不使用floating:true
并尝试在图的中间渲染图例时,highcharts将忽略y属性,因为它可能导致重叠。浮动图例时,此行为不适用。你可以看到这个例子:http://jsfiddle.net/axfahe5u/2/
legend: {
align: 'center',
floating:true,
verticalAlign: 'bottom',
y: -15
},
对于图表标题,您可以简单地设置title
对象的属性,如下所示:
title:{
align:'left',
x:-10
},
你可以看到上面的小提琴用作参考。
为了在图表显示后再进行
这里我使用了一个在图表为rendred后立即调用的回调函数。 您可以在任何其他电话中使用它。
$('#container').highcharts({
chart:{
marginLeft:170,
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
legend: {
verticalAlign: 'bottom',
floating:true,
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
}, function(){
//legend
var legend = $('#container .highcharts-legend');
var x = legend.position().left;
var y = legend.position().top - 20;
legend.attr({
transform: 'translate(' + x + ',' + y + ')'
});
//title
var title = $('#container .highcharts-title');
x = title.position().left-690;
y = title.position().top;
title.attr({
transform: 'translate(' + x + ',' + y + ')'
});
});