Highcharts 加载图表时是否可以禁用highchart图表的缩放
加载图表时,是否可以禁用highchart图表的缩放功能。Highcharts 加载图表时是否可以禁用highchart图表的缩放,highcharts,Highcharts,加载图表时,是否可以禁用highchart图表的缩放功能。 我有多个图形,因此希望禁用缩放选项,直到加载所有图形。只需在图表配置中将zoomType设置为null即可 zoomType: null 请参阅文档基本上,您需要做的唯一一件事就是删除图表,并用您喜欢的设置替换它 请参阅下面的代码: var chart = $('#container').highcharts(); function renderChart(){ chart = new Highcharts.Chart(ch
我有多个图形,因此希望禁用缩放选项,直到加载所有图形。只需在图表配置中将zoomType设置为null即可
zoomType: null
请参阅文档基本上,您需要做的唯一一件事就是删除图表,并用您喜欢的设置替换它 请参阅下面的代码:
var chart = $('#container').highcharts();
function renderChart(){
chart = new Highcharts.Chart(chart.options);
chart.render();
}
要启用缩放(或任何其他设置)后:
老实说,我不确定旧图表会发生什么。希望它只是被覆盖了,不会造成很大的内存问题
我创建了一个fiddle,您可以发现它可以动态更改图表的zoomType,但它不是官方API的一部分。这样,在加载所有图表后,您将能够将其zoomType从none更改为some
$(function () {
$('#container').highcharts({
chart: {
zoomType: ''
},
xAxis: {
minRange: 1
},
series: [{
data: [1,2,3,4,5,6,7]
}]
});
function enableZoom(zoomType) {
var chart = $('#container').highcharts(),
zoomX = /x/.test(zoomType),
zoomY = /y/.test(zoomType);
chart.options.zoomType = zoomType;
chart.pointer.zoomX = zoomX;
chart.pointer.zoomY = zoomY;
chart.pointer.zoomHor = zoomX;
chart.pointer.zoomVert = zoomY;
}
$('#zoomX').click(function () {
enableZoom('x');
});
$('#zoomY').click(function () {
enableZoom('y');
});
$('#zoomXY').click(function () {
enableZoom('xy');
});
$('#noZoom').click(function () {
enableZoom('');
});
});
jsIDLE:基本上,当显示图表的加载标签时,您可以停止“选择”事件(缩放) 使用默认的Highcharts函数
.showLoading()
显示加载标签,使用默认变量loadingShown
验证是否显示加载标签
因此,通过使用函数.showLoading()
,比如在执行AJAX请求之前,使用变量loadingShown
验证是否显示了加载标签,我们可以停止选择事件
另一种方法是使用第三方加载掩码,并将其添加到图表的容器中
在下一个示例中,您将了解如何使用.showLoading()
函数取消缩放,以及如何使用jQuery插件:pLoading(用于显示加载掩码)
jsfiddle中的示例:重点是在图表呈现后很难更新图表设置。(通常需要重新创建整个图表)在图表渲染之前,如果需要显示特定范围,也可以使用setExtreme。哦,真的,那么很难实现此功能。根据要求,禁用缩放,直到所有图形都显示出来loaded@NishithKantChaturvedi根据问题,加载数据后需要启用缩放功能。在这种情况下,请使用setExterem,以便在加载所需范围内的所有数据时以及加载后,用户可以根据需要进行缩放。希望我能理解您的问题。换句话说,在加载所有图表后,您需要启用动态缩放?谢谢,它可以正常工作,但面临的问题是,我使用的是xtype:highchart而不是$(“#容器”)。highcharts({,所以在图表渲染后无法获取对象。请help@cheeku还有其他获取图表的方法,比如使用非jQuery cunstructor-。另一种方法是使用全局数组
Highcharts。charts
保存当前页面/帧中的所有图表。我在一个循环中呈现了多个图表,并且必须使用Xtype:highchart来准备图表。Moto将在加载所有图形后启用缩放Highcharts.Chart.prototype.callbacks.push(函数(wchart){正在为最后一个图形工作only@cheeku你能发布一个活生生的例子吗,比如JSFIDLE?你是如何创建图表的?你的数据是如何加载的?谢谢!它在GWT的“moxiegroup”包装器中运行得非常好
$(function () {
$('#container').highcharts({
chart: {
zoomType: ''
},
xAxis: {
minRange: 1
},
series: [{
data: [1,2,3,4,5,6,7]
}]
});
function enableZoom(zoomType) {
var chart = $('#container').highcharts(),
zoomX = /x/.test(zoomType),
zoomY = /y/.test(zoomType);
chart.options.zoomType = zoomType;
chart.pointer.zoomX = zoomX;
chart.pointer.zoomY = zoomY;
chart.pointer.zoomHor = zoomX;
chart.pointer.zoomVert = zoomY;
}
$('#zoomX').click(function () {
enableZoom('x');
});
$('#zoomY').click(function () {
enableZoom('y');
});
$('#zoomXY').click(function () {
enableZoom('xy');
});
$('#noZoom').click(function () {
enableZoom('');
});
});
$(function () {
var setEvents;
var chart;
$.getJSON('https://www.highcharts.com/samples/data/jsonp.php?filename=usdeur.json&callback=?', function (data) {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
zoomType: 'x',
events: {
selection: function () {
//Quit the selection event, while the loading spinner is displayed.
if (chart.loadingShown) {
return false;
}
}
}
},
title: {
text: 'USD to EUR exchange rate over time'
},
subtitle: {
text: document.ontouchstart === undefined ?
'Click and drag in the plot area to zoom in' : 'Pinch the chart to zoom in'
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: 'Exchange rate'
}
},
legend: {
enabled: false
},
plotOptions: {
area: {
fillColor: {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1
},
stops: [
[0, Highcharts.getOptions().colors[0]],
[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
]
},
marker: {
radius: 2
},
lineWidth: 1,
states: {
hover: {
lineWidth: 1
}
},
threshold: null
}
},
series: [{
type: 'area',
name: 'USD to EUR',
data: data
}]
});
});
setEvents = function () {
var $showLoadingBtn = $('.show-loading');
var $hideLoadingBtn = $('.hide-loading');
var $showExternalMask = $('.show-toggle-mask');
var $hideExternalMask = $('.hide-toggle-mask');
$showLoadingBtn.on('click.showLoading', function () {
chart.showLoading();
});
$hideLoadingBtn.on('click.hideLoading', function () {
chart.hideLoading();
});
$showExternalMask.on('click.toggleMask', function () {
$('#container').ploading({action: 'show'});
});
$hideExternalMask.on('click.toggleMask', function () {
$('#container').ploading({action: 'hide'});
});
}();
});