剑道图中的对数轴标尺。

问题描述 投票:2回答:3

我有一个方案,我需要以对数顺序显示轴刻度。我搜索了一下,发现这个选项是不可用的,但这些帖子已经有近一年的历史了。最新版本中是否提供了这个功能?

下面是我查到的剑道论坛的链接。

http:/www.kendoui.comforumsdatavizchartlogarithmic-scale.aspxhttp:/www.kendoui.comforumsdatavizchartdoes-kendo-support-log-scale.aspx

kendo-ui kendo-dataviz
3个回答
2
投票

我知道这是一个老帖子,但我发现它试图做这样的事情。我发现了一个变通的方法,它可能是它帮助别人。

我找到了一个在Kendo UI中实现对数刻度的方法。基本上,我的想法是将数值从对数形式转换为线性形式,然后用KendoUI serie(在我的例子中是 "散点线")绑定数据,并使用模板替换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);
}

以及DataSource的转换。

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
投票

下面是一个对数缩放的例子。

http:/demos.telerik.comkendo-uibar-chartslogarithmic-axis。


-1
投票

在剑道图中不能这样做(2013年起)

© www.soinside.com 2019 - 2024. All rights reserved.