目标在同一图表中渲染多个折线图(假设为2).图表具有不同的x / y值对.对于一个x值,我不知道两个y值.
我正在使用Silverlight.可用的类是SerialChart和lineGraph.两个图的数据源相同,并在SerialChart级别设置.两个图形(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,new MyClass() { category = 0.18,Graph2 = 0.12 } ... and so on ...}
问题关于“???”我该怎么办?值?我没有该类别值的该图表的实际值.
如果我没有设置值,则假定默认值为0.0,并且它会向x轴绘制尖峰.如果我设置以前已知的Graph1 / Graph2值,那么它会创建一个水平连接,其中不应该是一个.我基本上改变了导致错误结果的图表.
那么我该如何解决这个问题呢?我感觉amCharts不支持这种情况.
解决方法 您需要添加两个“值”轴,一个在X方向,一个在Y方向(想象,如气泡图).// AXES// Xvar xAxis = new AmCharts.ValueAxis();xAxis.position = "bottom";xAxis.grIDAlpha = 0.1;xAxis.autoGrIDCount = true;chart.addValueAxis(xAxis);// Yvar 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}];
然后为图表的每一行添加一个“图形”,指定从对象数组中获取值的位置.
// GRAPHSvar 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/
总结以上是内存溢出为你收集整理的Amcharts SerialChart多线图不同类别值成员路径(Silverlight)全部内容,希望文章能够帮你解决Amcharts SerialChart多线图不同类别值成员路径(Silverlight)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)