Я знаю, что это старый пост, но я обнаружил, что он пытается сделать что-то подобное. Я нашел обходной путь, и, возможно, это поможет кому-то.
Я нашел способ реализовать логарифмическую шкалу в пользовательском интерфейсе Kendo. По сути, идея состоит в том, чтобы преобразовать значения из логарифмической формы в линейную, затем связать данные с серией 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». (это скретч-код, просто для иллюстрации):
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"))
Надеюсь, это поможет кому-то.
person
Ansenagy
schedule
11.11.2013