2012-10-09 70 views
7

編輯我改寫了我的問題,使下面託尼談話後更容易理解(謝謝!)。Amcharts SerialChart多個折線圖,不同的類別值組成路徑(Silverlight的)

目標在同一個圖表中呈現多個折線圖(比方說2)。圖表具有不同的x/y值對。對於一個x值,我不知道兩個y值。

我正在使用Silverlight。可用的類是和LineGraph。這兩個圖形的數​​據源都是相同的,並且設置在級別。 x軸的屬性名稱也在這兩個圖表中定義(CategoryValueMemberPath)。根據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 ... 
} 

問題那我該怎麼處理呢?「???」值?對於該類別值,我沒有該圖表的實際值。

如果我沒有設置一個值,則默認值爲0.0,並且它會在x軸上繪製一個尖峯。如果我設置了以前已知的Graph1/Graph2值,那麼它會創建一個不應該有一個的水平連接。我基本上改變了導致錯誤結果的圖形。

那麼我該如何解決這個問題呢?我感覺到amCharts不支持這種情況。

回答

4

您需要添加兩個'值'軸,一個在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} 
]; 

然後,對於每個線a「曲線圖」添加到圖表指定其中從對象數組中獲取的值。

// 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/

+0

託尼您好,感謝您的答覆。但是,我還受限於'貓'的價值嗎?我有不同的'貓'值的線。我將有條目:{cat:0.1,line1:0.23,line2:,line3:}和{cat:0.12,line1:,line2:0.35,line3:}。根據我的理解,amCharts受限於一個共同的類別值。 – Wolfgang

+0

其不受限制。我已經使用了您的示例數據,每行有不同的cat值 – tonycoupland

+0

考慮到這一點,名稱'cat'可能是誤導性的。我會改變它 – tonycoupland