gpt4 book ai didi

javascript - 如何向此 JS PNG 转换器添加更多列? [ Highcharts ]

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

我正在使用下面的代码

http://jsfiddle.net/highcharts/gd7bB/

基本上它可以很好地满足我的目的,但在我的情况下它会生成一个长图像(在某些情况下我有一个像 300x7000 像素的图像!)

在代码中是这个函数:

 $.each(charts, function(i, chart) {
var svg = chart.getSVG();
svg = svg.replace('<svg', '<g transform="translate(0,' + top + ')" ');
svg = svg.replace('</svg>', '</g>');

top += chart.chartHeight;
width = Math.max(width, chart.chartWidth);

svgArr.push(svg);
});

我正在尝试弄清楚如何使图形并排堆叠 3 个宽度,然后它进入下一行。

有点像这样(X 是一个图形):

X X X

X X X

代替:

X

X

X

有人知道我如何修改这段代码来做到这一点吗?我不知道从哪里开始。提前致谢!

最佳答案

本质上,它只是归结为逻辑和正确移动各个 SVG 之间的关系。正如您所指出的,Highcharts.getSVG 代码的基本行是:

svg = svg.replace('<svg', '<g transform="translate(0,' + top + ')" ');

下面 ( JSFiddle here ) 我做了一个粗略的例子来说明如何做到这一点,它归结为逻辑和在移动到新高度之前跟踪宽度(和“列”)(“行”):

Highcharts.getSVG = function(charts) {
var svgArr = [],
columns = 3, // How many columns you want
top = 0,
width = 0,
currentTopMax = 0;
currentWidth = 0,
currentColumn = 0,
index = 0;

$.each(charts, function(i, chart) {
var svg = chart.getSVG({chart:{width:chart.chartWidth, height:chart.chartHeight}});
svg = svg.replace('<svg', '<g transform="translate(' + currentWidth + ',' + top + ')" ');
svg = svg.replace('</svg>', '</g>');

currentWidth += chart.chartWidth;

currentTopMax = Math.max(currentTopMax, chart.chartHeight);
width = Math.max(width, currentWidth);
index++;

if(++currentColumn % columns == 0) {
top += currentTopMax;
currentTopMax = 0;
currentWidth = 0;
}

svgArr.push(svg);
});

if(index % columns != 0)
top += currentTopMax;

return '<svg height="'+ top +'" width="' + width + '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svgArr.join('') + '</svg>';
};

另请注意,您的原始代码存在问题,chart.getSVG 为每个单独的图表获取不正确的宽度,留下一些空白。原来的行是:

var svg = chart.getSVG();

已被替换为:

var svg = chart.getSVG({chart:{width:chart.chartWidth, height:chart.chartHeight}});

感谢 Joel Stransky finding that fix .

关于javascript - 如何向此 JS PNG 转换器添加更多列? [ Highcharts ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33920037/

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