Javascript amchart-将参数传递给属性/跨图重用属性/跨多个图使用相同的属性
这是我用来绘制线图的代码Javascript amchart-将参数传递给属性/跨图重用属性/跨多个图使用相同的属性,javascript,jquery,ajax,json,amcharts,Javascript,Jquery,Ajax,Json,Amcharts,这是我用来绘制线图的代码 var db_query = <?php echo json_encode($db_query_1) ?>; var chart; var graph; /* chart initialization */ var chart = AmCharts.makeChart("plot1", { type: "serial", categoryField: "OCCUR_DATE", graphs: [{ type: "s
var db_query = <?php echo json_encode($db_query_1) ?>;
var chart;
var graph;
/* chart initialization */
var chart = AmCharts.makeChart("plot1", {
type: "serial",
categoryField: "OCCUR_DATE",
graphs: [{
type: "smoothedLine",
theme: "light",
valueField: "FREQ"
}]
})
$.ajax({
type: 'POST',
url: "mySQL.php",
data: {'db_que': db_query},
dataType: 'html',
context: document.body,
global: false,
async:true,
success: function(data) {
//alert(data);
chart.dataProvider = eval(data);
chart.validateNow();
}
});
与
有人可以指导/帮助我吗?图表实例将您传入的对象重新用作配置,因此,很自然,您不能将同一个对象传入多个图表 不过,您可以做的是在应用修改并传入图表实例之前传入复制的config对象 中有一个很好的对象克隆功能 所以基本上你可以这样做:
// define universal config
var universalConfig = {...};
// clone universalConfig
var instanceConfig1 = clone(universalConfig);
// make modifications
instaceConfig1.categoryField = "OCCUR_DATE";
// create the chart
var chart = AmCharts.makeChart("plot1", instaceConfig1);
// repeat
// ...
这是一个。图表实例将您传入的对象作为配置重用,因此,很自然,您不能将同一个对象传入多个图表 不过,您可以做的是在应用修改并传入图表实例之前传入复制的config对象 中有一个很好的对象克隆功能 所以基本上你可以这样做:
// define universal config
var universalConfig = {...};
// clone universalConfig
var instanceConfig1 = clone(universalConfig);
// make modifications
instaceConfig1.categoryField = "OCCUR_DATE";
// create the chart
var chart = AmCharts.makeChart("plot1", instaceConfig1);
// repeat
// ...
这是一个例子
例如:
var defaultPlotConfig = {
/* amCharts configuration object */
}
并在创建图表之前将它们插入html
<script src="defaults.js"></script>
重要提示:第一个参数必须是新对象{}
,因为它是返回的对象extend()
方法,可以合并多个对象。参数中的最后一个对象具有优先级。你所要做的就是:
var plotChart1 = AmCharts.makeChart("plot1", $.extend({}, defaultPlotConfig));
var plotChart1 = AmCharts.makeChart("plot1",
$.extend({}, defaultPlotConfig, {
/* these will overwrite the defaults */
categoryAxis: {
title: "x axis title"
}
})
);
例如:
var defaultPlotConfig = {
/* amCharts configuration object */
}
并在创建图表之前将它们插入html
<script src="defaults.js"></script>
重要提示:第一个参数必须是新对象{}
,因为它是返回的对象extend()
方法,可以合并多个对象。参数中的最后一个对象具有优先级。你所要做的就是:
var plotChart1 = AmCharts.makeChart("plot1", $.extend({}, defaultPlotConfig));
var plotChart1 = AmCharts.makeChart("plot1",
$.extend({}, defaultPlotConfig, {
/* these will overwrite the defaults */
categoryAxis: {
title: "x axis title"
}
})
);
请注意,
extend()
只会复制对象的第一层。数组(例如,图形的数组)将不会合并。有关更多信息,请阅读。要解决这个问题,您必须稍后分配数组值,或者看看martynasma是如何解决的。您好Gerric-非常感谢。我在别处也使用了你的答案和想法。再次感谢你。你好,Gerric-如果我被证明是一个痛苦的人,我道歉。你能帮我解决另一个通过循环生成图表的问题吗?请注意,extend()
只会复制对象的第一层。数组(例如,图形的数组)将不会合并。有关更多信息,请阅读。要解决这个问题,您必须稍后分配数组值,或者看看martynasma是如何解决的。您好Gerric-非常感谢。我在别处也使用了你的答案和想法。再次感谢你。你好,Gerric-如果我被证明是一个痛苦的人,我道歉。你能帮我解决另一个通过循环生成图表的问题吗?我已经把问题发到了——你好,马丁——非常感谢。这很有帮助。你好,Martyn-如果我觉得很烦人,请道歉。你能帮我解决另一个通过循环生成图表的问题吗?我已经把问题发到了——你好,马丁——非常感谢。这很有帮助。你好,Martyn-如果我觉得很烦人,请道歉。你能帮我解决另一个通过循环生成图表的问题吗?已将问题发布在-