Kendo UI 图表类别轴自定义视觉对象

Kendo UI Chart Category Axis Custom Visual

我正在尝试为 Kendo UI 图表的类别轴标签创建自定义视觉对象。视觉对象需要看起来像位于图表下方的 table。到目前为止,我已经能够绘制类似 table 的视觉效果,但找不到任何文档将文本放置在 table 中。如何在 Rect 中定位文本?

代码:

        $("#chart").kendoChart({
            categoryAxis: {
                categories: ["M1", "M2", "M3", "M4"],
                labels: {
                    visual: function (e) {
                        var draw = kendo.drawing;
                        var geom = kendo.geometry;
                        var Rect = geom.Rect;
                        var Path = draw.Path;
    
                        var rect = new Rect(e.rect.origin, [e.rect.size.width, 300]);
                        var pathRect = new Rect(e.rect.origin, [e.rect.size.width, 50]);
    
                        var pathA = Path.fromRect(pathRect);
                        var pathB = Path.fromRect(pathRect);
    
                        var layout = new kendo.drawing.Layout(rect, {
                            orientation: "vertical"
                        });
    
                        var p = new geom.Point(e.rect.origin.x, e.rect.origin.y);
                        var t1 = new kendo.drawing.Text(e.text, p);
                        var t2 = new kendo.drawing.Text("test1", p);
    
                        layout.append(pathA, pathB, t1, t2);
    
                        layout.reflow();
                        return layout;
                    }
                }
            },
            series: [{
                data: [1, 2, 3, 4]
            }]
        });
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.common.min.css"/>
        <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.rtl.min.css"/>
        <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.silver.min.css"/>
        <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.mobile.all.min.css"/>
    
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://kendo.cdn.telerik.com/2016.1.112/js/kendo.all.min.js"></script>
      
    <div id="chart"></div>
   

您正在将矩形和文本添加到 Layout 元素中,该元素旨在让其子元素流动并避免一个位于另一个之上。相反,使用组元素,然后相应地放置矩形和文本:

$("#chart").kendoChart({
  categoryAxis: {
    categories: ["M1", "M2", "M3", "M4"],
    labels: {
      visual: function (e) {
        var draw = kendo.drawing;
        var geom = kendo.geometry;
        var Rect = geom.Rect;
        var Path = draw.Path;


        var rect = new Rect([e.rect.origin.x, e.rect.origin.y ], [e.rect.size.width, 50]);
        var pathA = Path.fromRect(rect);

        var pathRect = new Rect([e.rect.origin.x, e.rect.origin.y + 50], [e.rect.size.width, 50]);
        var pathB = Path.fromRect(pathRect);

        var p1 = new geom.Point(e.rect.origin.x + 4, e.rect.origin.y + 4);
        var t1 = new draw.Text(e.text, p1);
        var p2 = new geom.Point(e.rect.origin.x + 4, e.rect.origin.y + 54);                        
        var t2 = new draw.Text("test1", p2);

        var group = new draw.Group();
        group.append(pathA,pathB, t1, t2); 

        return group;
      }
    }
  },
  series: [{
    data: [1, 2, 3, 4]
  }]
});

DEMO