2013-05-10 127 views

回答

2

我知道這是舊的文章,但我發現它試圖做這樣的事情。我找到了一個解決方法,它可能會幫助別人。

我找到了在Kendo UI中實現對數比例的方法。基本上,這個想法是將它的對數形式的值轉換爲線性形式,然後用KendoUI系列(在我的情況下爲「散亂線」)綁定數據,並使用模板替換Y軸上的標籤。

.YAxis(axis => axis 
    .Numeric() 
    .Title("BER (dB)") 
    .Labels(l => l.Template("#= formatLog2('{0:0}', value) #")) 
    .Reverse() 
    .AxisCrossingValue(double.MaxValue) 
.Tooltip(tooltip => tooltip 
    .Visible(true) 
    .Template("#= formatLog('{0:0.00000000000000}', value.y) #") 

和JavaScript函數「formatLog2」。 (它是一個刮代碼,只是爲了ilustrate的點):

function formatLog2(format, value) { 

    if (value < 0) value = value * -1; 

    value = Math.pow(10, value); 

    return kendo.format(format, value); 
} 

和數據源變換:

using (IDatabase db = Database.Create()) 
using (DataTable dt = new DataTable()) 
{ 
    db.ExecuteQuery(dt, Query); 

    List<UnavailabilityChartPoint> l = new List<UnavailabilityChartPoint>(); 

    foreach (DataRow r in dt.Rows) 
    { 
     l.Add(new UnavailabilityChartPoint(
     r.Field<DateTime>("Date"), 
     Math.Log10(r.Field<double>("UnSignalMonthly")) 
     )); 
    } 

    return Json(l); 
} 

的重要組成部分是記錄的線性和對數到線性變換:

value = Math.pow(10, value);  
Math.Log10(r.Field<double>("UnSignalMonthly")) 

希望這有助於某人。

0

沒有鏈接,你可以這樣做,在劍道圖表