当前位置: 首页 > 知识库问答 >
问题:

制作图表.js水平条形标签多行

邢凯歌
2023-03-14

只是想知道是否有任何方法可以使用图表.js为y轴设置水平条标签。以下是我如何设置图表:

<div class="box-body">
<canvas id="chart" style="position: relative; height: 300px;"></canvas>
</div>

Javascript:

    var ctx = document.getElementById('chart').getContext("2d");
    var options = {
        layout: {
            padding: {
              top: 5,
            }
        },
        responsive: true,
        animation: {
            animateScale: true,
            animateRotate: true
        },
    };

    var opt = {
      type: "horizontalBar",
      data: { 
        labels: label, 
        datasets: [{ 
        data: price, 
        }] 
      }, 
      options: options
    };

    if (chart) chart.destroy();
    chart= new Chart(ctx, opt);

    chart.update();

正如你们所看到的,第一个和第三个标签太长了,被切断了。有没有办法使标签多行?

共有2个答案

王渊
2023-03-14

您可以使用以下图表插件:

plugins: [{
   beforeInit: function(chart) {
      chart.data.labels.forEach(function(e, i, a) {
         if (/\n/.test(e)) {
            a[i] = e.split(/\n/);
         }
      });
   }
}]

添加此,然后添加图表选项

ᴜꜱᴀɢᴇ :

将新行字符 (\n) 添加到标签中,无论在何处添加换行符。

ᴅᴇᴍᴏ

var chart = new Chart(ctx, {
   type: 'horizontalBar',
   data: {
      labels: ['Jan\n2017', 'Feb', 'Mar', 'Apr'],
      datasets: [{
         label: 'BAR',
         data: [1, 2, 3, 4],
         backgroundColor: 'rgba(0, 119, 290, 0.7)'
      }]
   },
   options: {
      scales: {
         xAxes: [{
            ticks: {
               beginAtZero: true
            }
         }]
      }
   },
   plugins: [{
      beforeInit: function(chart) {
         chart.data.labels.forEach(function(e, i, a) {
            if (/\n/.test(e)) {
               a[i] = e.split(/\n/);
            }
         });
      }
   }]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="ctx"></canvas>
富凯风
2023-03-14

如果您想要完全控制标签跨行分解的长度,可以通过在嵌套数组中提供标签来指定断点。例如:

var chart = new Chart(ctx, {
...
  data: {
    labels: [["Label1 Line1:","Label1 Line2"],["Label2 Line1","Label2 Line2"]],
    datasets: [{
...
});
 类似资料:
  • 我创建了一个水平条形图w/chart.js,需要在y轴上创建两组标签,但只能创建一个。 例如,参见下图,在y轴上,我有一组单词“other”和“paper ”,计数分别为2和3;在这个分组和下面的两个分组中,我还需要显示与这两个词相关的月份——比如五月。 有办法做到这一点吗? 附言:在附加的图像中,我将镜像设置为true,但如果解决方案能给我所需的输出,我愿意关闭镜像。 到目前为止,我已经查看了这

  • 我正在尝试使用2.3.0绘制chart.js水平条形图- 但它只显示一个小节。我错过了什么?

  • 有人可以帮我绘制x轴标签的百分比给我的水平条形图的以下代码吗? 发现很难找到,因为我想要一个没有x轴标签和刻度的更简单的图表。 [水平条形图][1] 每次我得到一个EOF错误。有人能帮忙吗?

  • 我正在使用MPAndroidChart库。在条形图中,默认情况下,所有条形图都是垂直的(自下而上),如何水平显示?

  • 我试图在3.2.0中创建一个混合堆叠的水平条形图和折线图Charts.js。 预期行为:一个轴在底部的堆叠条,包括轴标题和一个轴在顶部的折线图。 实际行为:底部的所有轴都显示了一个额外的轴,该轴似乎与任何数据集都不对应。不显示轴标题。 注意:代码中有几个条形的值为零,根据生成的数据,这些值可以是非零的。 我的代码: jsfiddle 当前行为的屏幕截图

  • 任何人都可以帮我把城市名称添加到每个水平条的顶部吗?我已经做了其他一切。只需要弄清楚这一点。 这是我为了得到条形图而写的代码。我需要指导每个条顶部的标签。