Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载图表后使用javascript更新变量-amcharts_Javascript_Json_Global Variables - Fatal编程技术网

加载图表后使用javascript更新变量-amcharts

加载图表后使用javascript更新变量-amcharts,javascript,json,global-variables,Javascript,Json,Global Variables,我需要使用select菜单更新许多JSON数组中的数据 思想是这样的: 选择使用与该年相关联的数据更新全局变量(JSON数组)的年份 我的问题是我不确定变量的作用域以及如何控制它。我还发现amcharts在加载时构建图表,因此更新变量不会起任何作用 是否可以使用新数据集更新全局变量,然后使用新数据重新加载图表?这是什么样子的 不确定此更新是否有帮助,或者这是否更清楚 下面是我创建的一个图表的链接: 速记结构如下: <head> <script> amchart scri

我需要使用select菜单更新许多JSON数组中的数据

思想是这样的: 选择使用与该年相关联的数据更新全局变量(JSON数组)的年份

我的问题是我不确定变量的作用域以及如何控制它。我还发现amcharts在加载时构建图表,因此更新变量不会起任何作用

是否可以使用新数据集更新全局变量,然后使用新数据重新加载图表?这是什么样子的

不确定此更新是否有帮助,或者这是否更清楚

下面是我创建的一个图表的链接:

速记结构如下:

<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()了解详细信息。

似乎不起作用。我以前试过这样写,但没有成功,所以我就直接写了。你也没有解决这个问题。我不清楚我想学什么。这是很有帮助的,虽然你可以创建一个小提琴,并让它工作。修改以上的答案。很好的谢谢。我需要时间来解决这个问题,但我可以看到它是有效的。