2

我有一个场景,我需要以对数顺序显示轴刻度。我做了一点搜索,发现这个选项不可用,但帖子已经快一年了。最新版本中是否提供了此功能?

这是我查看的剑道论坛的链接

http ://www.kendoui.c​​om/forums/dataviz/chart/logarithmic-scale.aspx http://www.kendoui.c​​om/forums/dataviz/chart/does-kendo-support-log- scale.aspx

4

3 回答 3

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”。(这是一个临时代码,只是为了说明这一点):

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"))

希望这可以帮助某人。

于 2013-11-11T15:09:24.993 回答
0

这是对数刻度的示例。

http://demos.telerik.com/kendo-ui/bar-charts/logarithmic-axis

于 2015-03-20T19:13:20.500 回答
-1

不,你不能在剑道图表中这样做(截至 2013 年)

于 2013-05-14T14:43:12.780 回答