代码之家  ›  专栏  ›  技术社区  ›  CMartins

如何在Kendo UI图表上包装Categoryaxis文本

  •  0
  • CMartins  · 技术社区  · 7 年前

    我认识到,在kendo ui图表上使用CategoryAxisValues的长文本名称,文本将重叠并显示在彼此的顶部。我试图检查文档,寻找可以修复它的属性,但显然不存在或找不到它。 以下是Telerik页面的一个示例:

    <!DOCTYPE html>
    <html>
    <head>
        <base href="https://demos.telerik.com/kendo-ui/bar-charts/column">
        <style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
        <title></title>
        <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.115/styles/kendo.common-bootstrap.min.css" />
        <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.115/styles/kendo.bootstrap.min.css" />
        <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.115/styles/kendo.bootstrap.mobile.min.css" />
    
        <script src="https://kendo.cdn.telerik.com/2019.1.115/js/jquery.min.js"></script>
        <script src="https://kendo.cdn.telerik.com/2019.1.115/js/kendo.all.min.js"></script>
    
    
    </head>
    <body>
    <div id="example">
        <div class="demo-section k-content wide">
            <div id="chart" style="background: center no-repeat url('../content/shared/styles/world-map.png');"></div>
        </div>
        <script>
            function createChart() {
                $("#chart").kendoChart({
                    title: {
                        text: "Gross domestic product growth /GDP annual %/"
                    },
                    legend: {
                        position: "top"
                    },
                    seriesDefaults: {
                        type: "column"
                    },
                    series: [{
                        name: "India",
                        data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]
                    }, {
                        name: "Russian Federation",
                        data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]
                    }, {
                        name: "Germany",
                        data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]
                    },{
                        name: "World",
                        data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]
                    }],
                    valueAxis: {
                        labels: {
                            format: "{0}%"
                        },
                        line: {
                            visible: false
                        },
                        axisCrossingValue: 0
                    },
                    categoryAxis: {
                        categories: ["2sdsdsfs sdf sffd002", "200sdfsf fddf sd fs3", "200sd sfsdf sdf4", "20sdf dfsdfsdfsf05", "20sd sdfsdfs06", "20sd dsfsdf07", "200sdf sdfdfsfsdf8", "2sdf sdfsdf009", "201sd fsdfsfd0", "201s ddfsdfdf1"],
                        line: {
                            visible: false
                        },
                        labels: {
                            padding: {top: 135}
                        }
                    },
                    tooltip: {
                        visible: true,
                        format: "{0}%",
                        template: "#= series.name #: #= value #"
                    }
                });
            }
    
            $(document).ready(createChart);
            $(document).bind("kendo:skinChange", createChart);
        </script>
    </div>
    
    
    </body>
    </html>
    

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   CMartins    7 年前

    解决方案在Telerik的文档中。 https://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart/configuration/categoryaxis.labels

    $("#chart").kendoChart({
    categoryAxis: {
      categories: ["foo bar"],
      labels: {
        visual: function(e) {
          var rect = new kendo.geometry.Rect(e.rect.origin, [e.rect.size.width, 100]);
          var layout = new kendo.drawing.Layout(rect, {
            orientation: "vertical",
            alignContent: "center"
          });
          var words = e.text.split(" ");
          for (var i = 0; i < words.length; i++) {
            layout.append(new kendo.drawing.Text(words[i]));
          }
          layout.reflow();
          return layout;
        }
      }
    },
    series: [{
      data: [1]
    }]
      });