gpt4 book ai didi

javascript - 通过缩放以编程方式在 Highcharts 中绘制矩形和线条

转载 作者:行者123 更新时间:2023-11-29 16:06:46 24 4
gpt4 key购买 nike

我正在使用 Highcharts.Renderer 在 Highcharts 中进行一些编程绘图使用 path()rect()。在下面的代码中,我手动绘制了直线和矩形的坐标。实际上,它们与主要数据系列(带值的日期)相关。

如何以编程方式绘制内容并进行缩放?

主图,缩放:

    chart: {
zoomType: 'x',
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},

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]
}]

程序绘图:

 chart.renderer.rect(100, 110, 100, 100, 5)
.attr({
'stroke-width': 2,
stroke: 'red',
fill: 'transparent',
zIndex: 3
})
.add();
var path = [
'M', 100, 100,
'L', 130, 110,
'L', 160, 105,
'L', 190, 150,
];
chart.renderer.path(path)
.attr({
'stroke-width': 2,
stroke: 'blue',
zIndex: 4
})
.add();

http://jsfiddle.net/n8ro1b9m/1/

最佳答案

现在您并没有真正使用您的图表值 - 您正在独立于您的系列绘制您的矩形和路径。您可以使用点 y 和 x 值以及 Axis.toPixels() 方法将绘图与图表连接起来:http://api.highcharts.com/highcharts/Axis.toPixels

$(function() {
var addRect = function(chart) {
$('.rect').remove();
var xAxis = chart.xAxis[0],
yAxis = chart.yAxis[0]
chart.renderer.rect(xAxis.toPixels(1), 110, xAxis.toPixels(2) - xAxis.toPixels(1), 100, 5)
.attr({
'stroke-width': 2,
stroke: 'red',
fill: 'transparent',
zIndex: 0
}).addClass('rect')
.add();
chart.renderer.rect(0, 0, chart.plotLeft, chart.chartHeight + chart.plotTop, 5)
.attr({
fill: 'white',
zIndex: 0
}).addClass('rect')
.add();
};
$('#container').highcharts({
chart: {
zoomType: 'x',
events: {
redraw: function() {
addRect(this);
},
load: function() {
addRect(this);
}
}
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
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]
}]
});
});

在这里您可以看到它如何工作的示例:http://jsfiddle.net/n8ro1b9m/4/

关于javascript - 通过缩放以编程方式在 Highcharts 中绘制矩形和线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com