加载图表后使用javascript更新变量-amcharts
我需要使用select菜单更新许多JSON数组中的数据 思想是这样的: 选择使用与该年相关联的数据更新全局变量(JSON数组)的年份 我的问题是我不确定变量的作用域以及如何控制它。我还发现amcharts在加载时构建图表,因此更新变量不会起任何作用 是否可以使用新数据集更新全局变量,然后使用新数据重新加载图表?这是什么样子的 不确定此更新是否有帮助,或者这是否更清楚 下面是我创建的一个图表的链接: 速记结构如下:加载图表后使用javascript更新变量-amcharts,javascript,json,global-variables,Javascript,Json,Global Variables,我需要使用select菜单更新许多JSON数组中的数据 思想是这样的: 选择使用与该年相关联的数据更新全局变量(JSON数组)的年份 我的问题是我不确定变量的作用域以及如何控制它。我还发现amcharts在加载时构建图表,因此更新变量不会起任何作用 是否可以使用新数据集更新全局变量,然后使用新数据重新加载图表?这是什么样子的 不确定此更新是否有帮助,或者这是否更清楚 下面是我创建的一个图表的链接: 速记结构如下: <head> <script> amchart scri
<head>
<script> amchart script </script>
<head>
<body>
<select>
<option>2010</option
<option>2011</option
<option>2012</option
<option>2013</option
<option>2014</option
</select>
<div id="chart-container-1"></div> // These charts are stacked (refer to the fiddle)
<div id="chart-container-2"></div>
<div id="chart-container-3"></div>
<div id="chart-container-4"></div>
<div id="chart-container-5"></div>
</body>
阿姆查特脚本
2010我想你应该做些更像这样的事情:
var chart;
var chartData = [
{
"subject": "Personal Services",
"2010": 493142064,
"2011": 540156996,
"2012": 593541335,
"2013": 640585618,
"2014": 689417065
}
];
AmCharts.ready(function () {
// SERIALL CHART
chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
chart.categoryField = "subject";
chart.plotAreaBorderAlpha = 0.2;
chart.rotate = true;
// AXES
// Category
var categoryAxis = chart.categoryAxis;
categoryAxis.gridAlpha = 0.1;
categoryAxis.axisAlpha = 0;
categoryAxis.gridPosition = "start";
// value
var valueAxis = new AmCharts.ValueAxis();
valueAxis.stackType = "regular";
valueAxis.gridAlpha = 0.1;
valueAxis.axisAlpha = 0;
chart.addValueAxis(valueAxis);
// GRAPHS
// firstgraph
var graph = new AmCharts.AmGraph();
graph.title = "2010";
graph.labelText = "[[value]]";
graph.valueField = "2010";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
graph.lineColor = "#C72C95";
graph.balloonText = "<b><span style='color:#C72C95'>[[title]]</b></span><br><span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
chart.addGraph(graph);
// second graph
graph = new AmCharts.AmGraph();
graph.title = "2011";
graph.labelText = "[[value]]";
graph.valueField = "2011";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
graph.lineColor = "#D8E0BD";
graph.balloonText = "<b><span style='color:#afbb86'>[[title]]</b></span><br><span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
chart.addGraph(graph);
// third graph
graph = new AmCharts.AmGraph();
graph.title = "2012";
graph.labelText = "[[value]]";
graph.valueField = "2012";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
graph.lineColor = "#B3DBD4";
graph.balloonText = "<b><span style='color:#74bdb0'>[[title]]</b></span><br><span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
chart.addGraph(graph);
// fourth graph
graph = new AmCharts.AmGraph();
graph.title = "2013";
graph.labelText = "[[value]]";
graph.valueField = "2013";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
graph.lineColor = "#69A55C";
graph.balloonText = "<b><span style='color:#69A55C'>[[title]]</b></span><br><span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
chart.addGraph(graph);
// fifth graph
graph = new AmCharts.AmGraph();
graph.title = "2014";
graph.labelText = "[[value]]";
graph.valueField = "2014";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
graph.lineColor = "#B5B8D3";
graph.balloonText = "<b><span style='color:#7a81be'>[[title]]</b></span><br><span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
chart.addGraph(graph);
// LEGEND
var legend = new AmCharts.AmLegend();
legend.position = "right";
legend.borderAlpha = 0.3;
legend.horizontalGap = 10;
legend.switchType = "v";
chart.addLegend(legend);
// WRITE
chart.write("chartdiv");
});
// Make chart 2D/3D
function setDepth() {
if (document.getElementById("rb1").checked) {
chart.depth3D = 0;
chart.angle = 0;
} else {
chart.depth3D = 20;
chart.angle = 30;
}
chart.validateNow();
}
var图;
var图表数据=[
{
“主题”:“个人服务”,
"2010": 493142064,
"2011": 540156996,
"2012": 593541335,
"2013": 640585618,
"2014": 689417065
}
];
AmCharts.ready(函数(){
//连续图表
chart=新的AmCharts.AmSerialChart();
chart.dataProvider=chartData;
chart.categoryField=“主题”;
chart.plotAreaBorderAlpha=0.2;
chart.rotate=true;
//斧头
//类别
var categoryAxis=chart.categoryAxis;
categoryAxis.gridAlpha=0.1;
categoryAxis.axisAlpha=0;
categoryAxis.gridPosition=“开始”;
//价值观
var valueAxis=新的AmCharts.valueAxis();
valueAxis.stackType=“常规”;
valueAxis.gridAlpha=0.1;
valueAxis.axisAlpha=0;
图表.添加valueAxis(valueAxis);
//图表
//第一图
var-graph=新的AmCharts.AmGraph();
graph.title=“2010”;
graph.labelText=“[[value]]”;
graph.valueField=“2010”;
graph.type=“column”;
graph.lineAlpha=0;
graph.fillAlphas=1;
graph.lineColor=“#C72C95”;
graph.ballootText=“[[title]]
[[category]]:[[value]]”;
图表。添加图表(图形);
//第二图
graph=新的AmCharts.AmGraph();
graph.title=“2011”;
graph.labelText=“[[value]]”;
graph.valueField=“2011”;
graph.type=“column”;
graph.lineAlpha=0;
graph.fillAlphas=1;
graph.lineColor=“#D8E0BD”;
graph.ballootText=“[[title]]
[[category]]:[[value]]”;
图表。添加图表(图形);
//第三图
graph=新的AmCharts.AmGraph();
graph.title=“2012”;
graph.labelText=“[[value]]”;
graph.valueField=“2012”;
graph.type=“column”;
graph.lineAlpha=0;
graph.fillAlphas=1;
graph.lineColor=“#B3DBD4”;
graph.ballootText=“[[title]]
[[category]]:[[value]]”;
图表。添加图表(图形);
//第四图
graph=新的AmCharts.AmGraph();
graph.title=“2013”;
graph.labelText=“[[value]]”;
graph.valueField=“2013”;
graph.type=“column”;
graph.lineAlpha=0;
graph.fillAlphas=1;
graph.lineColor=“#69A55C”;
graph.ballootText=“[[title]]
[[category]]:[[value]]”;
图表。添加图表(图形);
//第五图
graph=新的AmCharts.AmGraph();
graph.title=“2014”;
graph.labelText=“[[value]]”;
graph.valueField=“2014”;
graph.type=“column”;
graph.lineAlpha=0;
graph.fillAlphas=1;
graph.lineColor=“#B5B8D3”;
graph.ballootText=“[[title]]
[[category]]:[[value]]”;
图表。添加图表(图形);
//传奇
var legend=new AmCharts.AmLegend();
legend.position=“right”;
legend.borderAlpha=0.3;
legend.horizontalGap=10;
legend.switchType=“v”;
图表。添加图例(图例);
//写
chart.write(“chartdiv”);
});
//制作二维/三维图表
函数setDepth(){
if(document.getElementById(“rb1”).已选中){
chart.depth3D=0;
chart.angle=0;
}否则{
chart.depth3D=20;
chart.angle=30;
}
chart.validateNow();
}
此示例基于AmChart的堆叠图表示例代码。它将图表的数据分离为一个全局Javascript变量,即chartData
您需要将问题分解为两部分:数据的操作,然后在数据更改后将其加载到图表中
下面是使用jQuery和按钮操作数据的非常简单的示例
修改数据后,您需要更新图表。请看一个例子
查看chart.dataProvider chart.validateData()了解详细信息。似乎不起作用。我以前试过这样写,但没有成功,所以我就直接写了。你也没有解决这个问题。我不清楚我想学什么。这是很有帮助的,虽然你可以创建一个小提琴,并让它工作。修改以上的答案。很好的谢谢。我需要时间来解决这个问题,但我可以看到它是有效的。