gpt4 book ai didi

javascript - Highcharts:我可以动画更改条形图上条形的顺序吗?

转载 作者:行者123 更新时间:2023-11-30 19:56:27 25 4
gpt4 key购买 nike

我想创建一个如下图所示的图表。 https://www.reddit.com/r/interestingasfuck/comments/9togwf/the_major_world_economies_over_time/

我通过 Highcharts 创建了这张图表。但是,我无法通过动画改变条形的顺序。

function rotate(array, times) {
while (times--) {
var temp = array.shift();
array.push(temp)
}
}

window.data = {
categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
y_values: [100, 200, 300, 400, 500],
colors: ['#DC4D3A', '#E93D3F', '#83C6C7', '#46D388', '#D1D785']
};

document.getElementById("button").addEventListener("click", function () {
for (var i = 0; i < data['y_values'].length; i++) {
chart.series[0].data[i].update({y: data['y_values'][i]});
chart.series[0].data[i].update({color: data['colors'][i]});
}

chart.xAxis[0].update({categories: data['categories']});

rotate(data['y_values'], 1);
rotate(data['categories'], 1);
rotate(data['colors'], 1);
}, false);

enter image description here

我写的所有代码都在 JSFiddle 中。 https://jsfiddle.net/Shinohara/35e8gbyz/

请问有人能帮帮我吗?

最佳答案

Highcharts 为 SVG 元素提供了 animate 方法,您可以使用它来实现想要的结果。您需要为列、轴标签和数据标签设置动画:

document.getElementById("button").addEventListener("click", function() {
var points = chart.series[0].points,
ticks = chart.xAxis[0].ticks;

points[0].graphic.animate({
x: points[1].shapeArgs.x
});
points[1].graphic.animate({
x: points[0].shapeArgs.x
});

points[0].dataLabel.animate({
y: points[1].dataLabel.translateY
});
points[1].dataLabel.animate({
y: points[0].dataLabel.translateY
});

ticks[0].label.animate({
y: ticks[1].label.xy.y
});

ticks[1].label.animate({
y: ticks[0].label.xy.y
});

}, false);

现场演示:https://jsfiddle.net/BlackLabel/ux59vcd6/

API 引用:https://api.highcharts.com/class-reference/Highcharts.SVGElement#animate

关于javascript - Highcharts:我可以动画更改条形图上条形的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53935813/

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