这是我用来绘制折线图的代码。
return teks.split(""
+ "((?<=\\ )|(?=\\ ))|"
+ "((?<=\\!)|(?=\\!))|"
+ "((?<=\\√\\()|(?=\\√\\())|" //this is my problem
+ "((?<=\\√)|(?=\\√))|" //and this
+ "((?<=\\∛)|(?=\\∛))|"
+ "((?<=\\/)|(?=\\|))"
+ "((?<=\\&)|(?=\\&))"
+ "");
}
我想
替换它:
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();
}
});
与
var chart = AmCharts.makeChart("plot1", {
type: "serial",
categoryField: "OCCUR_DATE",
graphs: [{
type: "smoothedLine",
theme: "light",
valueField: "FREQ"
}]
})
我希望能够将参数传递给的属性 x轴和y轴标题&amp;图形名称。这些至少是非常的 我现在能想到的几个可变参数。如果我能做到这一点, 我可以轻松地添加更多可变参数。
我在这里寻求帮助的原因是,我有超过30个折线图,20个饼图和&amp;我将绘制的一些其他类型。在&amp;上设置相同的属性集再一次听起来是一种低效的做事方式。
有人可以指导/帮助我吗?
答案 0 :(得分:3)
只需创建一个JavaScript文件,将默认配置声明为变量。例如:。
var defaultPlotConfig = {
/* amCharts configuration object */
}
并将其插入您的html 之前创建图表
<script src="defaults.js"></script>
我假设您使用jQuery
即可(您的请求已在使用它)
您必须为配置对象制作一份深层副本。
jQuery.extend()
让这一切变得非常简单(您将在第3点看到,为什么我会使用它。)
该方法返回参数中传递的对象的合并对象。你要做的是:
var plotChart1 = AmCharts.makeChart("plot1", $.extend({}, defaultPlotConfig));
重要提示:第一个参数必须是新对象{}
,因为它是返回的对象。
使用extend()
方法,您可以合并多个对象。参数中的最后一个对象具有优先级。您所要做的就是:
var plotChart1 = AmCharts.makeChart("plot1",
$.extend({}, defaultPlotConfig, {
/* these will overwrite the defaults */
categoryAxis: {
title: "x axis title"
}
})
);
答案 1 :(得分:2)
图表实例重新使用您传入的对象作为配置,因此,当然,您无法将同一对象传递给多个图表。
但是,您可以做的是在应用修改并传入图表实例之前传递重复的配置对象。
this SO thread中有一个很好的对象克隆功能。
所以基本上你可以这样做:
// 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
// ...