Wol*_*ang 7 silverlight linegraph amcharts
编辑我改写了我的问题,以便在与Tony谈话之后让它更容易理解(谢谢!).
目标在同一图表中渲染多个折线图(假设为2).图表具有不同的x/y值对.对于一个x值,我不知道两个y值.
我正在使用Silverlight.可用的课程是SerialChart和LineGraph.两个图的数据源相同,并在该SerialChart级别设置.两个graph(CategoryValueMemberPath)也定义了x轴的属性名称.
正如amCharts文档所建议的那样,我们需要创建具有类别轴(x轴)属性的对象,然后每个图形创建一个属性.我们称它们为"Graph1"和"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 ...
}
Run Code Online (Sandbox Code Playgroud)
问题关于"???"我该怎么办?值?我没有该类别值的该图表的实际值.
如果我没有设置值,则假定默认值为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);
Run Code Online (Sandbox Code Playgroud)
将所有数据点合并到一个具有公共 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}
];
Run Code Online (Sandbox Code Playgroud)
然后为图表中的每一行添加一个“图表”,指定从对象数组中获取值的位置。
// 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);
Run Code Online (Sandbox Code Playgroud)
我已将所有这些放入小提琴中 - http://jsfiddle.net/64EWx/
| 归档时间: |
|
| 查看次数: |
11518 次 |
| 最近记录: |