Amcharts系列图表多折线图不同类别值成员路径(Silverlight)



EDIT在下面与Tony的对话后,我重写了我的问题,使其更易于理解(谢谢!)。

目标在同一图表中渲染多个折线图(假设为2个)。图表具有不同的x/y值对。对于一个x值,我不知道两个y值。

我正在使用Silverlight。可用于此操作的类是SerialChartLineGraph。两个图的数据源相同,并且设置为SerialChart级别。对于两个图(CategoryValueMemberPath),x轴的属性名称也在那里定义。

正如amCharts文档所建议的,我们需要创建具有类别轴(x轴)属性的对象,然后为每个图创建一个属性。让我们称它们为"Graph1"one_answers"Graph2"。所以数据源看起来像这样:

List<MyClass> data = new List<MyClass>()
{
new MyClass() { Category = 0.1, Graph1 = 0.14, Graph2 = ??? }
,new MyClass() { Category = 0.15, Graph1 = ???, Graph2 = 0.05 }
,new MyClass() { Category = 0.2, Graph1 = 0.35, Graph2 = ??? }
,new MyClass() { Category = 0.18, Graph1 = ???, Graph2 = 0.12 }
... and so on ...
}

问题我该如何处理"??"值?我没有那个类别值的那个图的实际值。

如果我没有设置值,则假定默认值为0.0,它会在x轴上绘制一个尖峰。如果我设置了以前已知的Graph1/Graph2值,那么它会在不应该有水平连接的地方创建一个水平连接。我基本上是在修改图表,这导致了一个错误的结果。

那么我该如何解决这个问题呢?我感觉amCharts不支持这种情况。

您需要添加两个"值"轴,一个在X方向,一个是在Y方向(想象一下,就像气泡图一样)。

// AXES
// X
var xAxis = new AmCharts.ValueAxis();
xAxis.position = "bottom";
xAxis.gridAlpha = 0.1;
xAxis.autoGridCount = true;
chart.addValueAxis(xAxis);
// Y
var yAxis = new AmCharts.ValueAxis();
yAxis.position = "left";
yAxis.gridAlpha = 0.1;
yAxis.autoGridCount = true;
chart.addValueAxis(yAxis);

将所有数据点合并到一个具有通用X轴字段名称(在我的示例中为"X")的数组中,对于第1行上的点,添加一个具有其值的属性"line1",对于第2行上的点将添加一个属性"line2"。

例如,您的数据如下所示:

var chartData = [
{x:0.1,line1:0.25},
{x:0.246,line1:0.342},
{x:0.12,line2:0.16},
{x:0.3,line2:0.485}
];

然后为图表中的每一行添加一个"图形",指定从对象数组中的何处获取值。

// GRAPHS
var graph = new AmCharts.AmGraph();
graph.xField = "x";
graph.yField = "line1";
graph.lineAlpha = 1;
graph.lineColor = '#FF9E01';
chart.addGraph(graph);
var graph2 = new AmCharts.AmGraph();
graph2.xField = "x";
graph2.yField = "line2";
graph.lineAlpha = 1;
graph2.lineColor = '#9EFF01';
chart.addGraph(graph2);

我为你把这一切都搞得一团糟——http://jsfiddle.net/64EWx/

最新更新