Javascript 创建一个;“正常”;带数组的amcharts.js中的折线图?

Javascript 创建一个;“正常”;带数组的amcharts.js中的折线图?,javascript,python,json,flask,amcharts,Javascript,Python,Json,Flask,Amcharts,我越来越绝望地看着阿姆查特完成最简单的任务。嗯,至少我认为很简单。我想用“正常”数据创建正常折线图。我说的正常是什么意思?嗯,有一个y值的数组,也可能有一个x值的数组: x = [1,2,3,4] y = [5,6,7,8] 把这样的东西放进图表不是很容易吗?我仍然坐在这里,不知道如何在amcharts中正确地做到这一点。我使用的是Flask(Python),可以使用jsonify将数组转换成JSON文件并发送给客户机,但我不能再进一步了 有什么想法吗?我是说,这不是最基本的任务吗?但所有使用

我越来越绝望地看着阿姆查特完成最简单的任务。嗯,至少我认为很简单。我想用“正常”数据创建正常折线图。我说的正常是什么意思?嗯,有一个y值的数组,也可能有一个x值的数组:

x = [1,2,3,4]
y = [5,6,7,8]
把这样的东西放进图表不是很容易吗?我仍然坐在这里,不知道如何在amcharts中正确地做到这一点。我使用的是Flask(Python),可以使用jsonify将数组转换成JSON文件并发送给客户机,但我不能再进一步了

有什么想法吗?我是说,这不是最基本的任务吗?但所有使用amCharts的示例都使用x的日期格式进行特殊处理


多谢各位

以下是最简单的定义。是一个对象数组,其中每个元素用其y值表示x轴项目

AmCharts.makeChart("your element id",{
    "type": "serial",
    "pathToImages": "http://cdn.amcharts.com/lib/3/images/",
    "categoryField": "category",
    "graphs": [
        {
            "valueField": "column-1"
        }
    ],
    "dataProvider": [
        {
            "category": "1",
            "column-1": "8"
        },
        {
            "category": "2",
            "column-1": 6
        },
        {
            "category": "3",
            "column-1": 2
        },
        {
            "category": "4",
            "column-1": 1
        }
    ]
});
现场样品:

首先,如果您正在考虑用任意X和Y坐标绘制一个折线图(与绘制基于系列的数据相反),最好使用XY图表,而不是串行图表

此外,amCharts将无法在单独的坐标数组中绘制数据

您可以在生成数据时将数据转换为适当的格式,如下所示:

chartData = [ {
  x: 1,
  y: 5
}, {
  x: 2,
  y: 6
}, {
  x: 3,
  y: 7
}, {
  x: 4,
  y: 8
}];
或者在将数据提供给图表之前,添加一些代码,将数据转换为amCharts兼容数据:

/**
 * Source data
 */
var x = [1,2,3,4];
var y = [5,6,7,8];

/**
 * Convert source data to AmCharts-compatible format
 */
var chartData = [];
for( var i = 0; i < x.length; i++ ) {
  chartData.push( {
    "x": x[ i ],
    "y": y[ i ]
  } )
}

/**
 * Create the chart
 */
var chart = AmCharts.makeChart( "chartdiv", {
  "type": "xy",
  "pathToImages": "http://www.amcharts.com/lib/3/images/",
  "dataProvider": chartData,
  "graphs": [ {
    "bullet": "circle",
    "bulletSize": 8,
    "lineAlpha": 1,
    "lineThickness": 2,
    "fillAlphas": 0,
    "xField": "x",
    "yField": "y",
  } ]
} );
/**
*源数据
*/
var x=[1,2,3,4];
变量y=[5,6,7,8];
/**
*将源数据转换为AmCharts兼容格式
*/
var chartData=[];
对于(变量i=0;i
以下是上述内容的工作演示:


到目前为止,您有什么?谢谢-这是一个很好的例子,也可以解释我的问题:如何正确地传输我的数组/列表(用Python)以使它们为阿姆查特所接受?我的第一个猜测是创建一个for循环,该循环将生成一个字符串,添加所有括号和书面名称(“第1列,类别”)。但这感觉非常错误,如果不是完全不干净和缓慢的话。第二:将
“category:”1“,
更改为
“category:”1.323“
”不会带来期望的结果-x值仍然是1,而不是1.323。好的,问题(1)更好的一步可能是创建一种jsonify将自动正确编码的dict,因此我可能不需要手动添加括号和内容,但还是有点奇怪和费时。非常感谢!很遗憾我不能直接使用数组,但很高兴我现在可以使用详细的x值。很高兴这有帮助。但我必须承认,我不太明白为什么不能使用数组?我没有Python方面的经验,但我非常确定,在生成网页时,有一种方法可以将Python中的本机数组转换为JSON。或者我在这里完全偏离了正轨了吗?当我从Python中为每个3点生成两行JSON时,它看起来是这样的:
{“result”:[[1.2,2.0,3.5],[4,3,7.5]}
在其他图表中,我可以用“data.result[0]”来处理这些数据对于第一行等。可能也会为x轴添加一个字段,但这就是我希望图表接受数据的方式。感谢您的解释。这不会有太大变化。您将使用数据。结果[0]而不是“y”-数据。结果[0]。我希望这是有意义的。好吧,我期望的是,我可以像这样输入数据:
{x=[1,2,3,4],y:[5,6,7,8]}
但这似乎不起作用。所以我真的必须添加一个“x”:在每个值之前?这将使JSON请求大量增加,或者我将不得不循环所有数据以使其成为一个正确的JSON字符串-如此多的计算,仅仅因为amCharts不接受数组?