chartjs气泡图中的单个气泡可以有标签吗?

时间:2016-12-08 16:16:44

标签: chart.js

我正在使用chartjs创建气泡图。我能够创建描述每个气泡的工具提示,但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示。 BubbleData对象格式不包含标签元素(无论如何我都放了一个 - 没有运气),我已经尝试了#34;标签"图表数据对象的元素(即使文档说这是针对类别标签 - 你永远不知道!),以及我能想到的所有标签都放在泡沫上。

是否有工具提示配置使所有工具提示始终可见?这对我也有用。

感谢;

格伦

2 个答案:

答案 0 :(得分:1)

我一直在寻找相同的东西,并想出如何做到这一点。

  1. 在数据集中添加标题:“dataTitle3”。

  2. 使用数据标签插件。

    http://www.chartjs.org/samples/latest/advanced/data-labelling.html

  3. 简单的代码操作实现了您想要的使用 “dataset.title” 我已经做了一个样本,但我想你可以找到答案 如果你玩的话,如何表示你想要的数据 https://jsfiddle.net/dovvas/s4zwzp3w/

  4. HTML: <canvas id="bubble-chart" width="800" height="800"></canvas>

    JAVASCRIPT:

    new Chart(document.getElementById("bubble-chart"), {
      type: 'bubble',
      data: {
        labels: "Africa",
        datasets: [{
          label: ["China"],
          backgroundColor: "rgba(255,221,50,0.2)",
          borderColor: "rgba(255,221,50,1)",
          title: "dataTitle1",//adding the title you want to show
          data: [{
            x: 21269017,
            y: 5.245,
            r: 15
          }]
        }, {
          label: ["Denmark"],
          backgroundColor: "rgba(60,186,159,0.2)",
          borderColor: "rgba(60,186,159,1)",
          title: "dataTitle2",
          data: [{
            x: 258702,
            y: 7.526,
            r: 10
          }]
        }, {
          label: ["Germany"],
          backgroundColor: "rgba(0,0,0,0.2)",
          borderColor: "#000",
          title: "dataTitle3",//adding the title you want to show
          data: [{
            x: 3979083,
            y: 6.994,
            r: 15
          }]
        }, {
          label: ["Japan"],
          backgroundColor: "rgba(193,46,12,0.2)",
          borderColor: "rgba(193,46,12,1)",
          title: "dataTitle4",//adding the title you want to show
          data: [{
            x: 4931877,
            y: 5.921,
            r: 15
          }]
        }]
      },
      options: {
        title: {
          display: true,
          text: 'Predicted world population (millions) in 2050'
        },
        scales: {
          yAxes: [{
            scaleLabel: {
              display: true,
              labelString: "Happiness"
            }
          }],
          xAxes: [{
            scaleLabel: {
              display: true,
              labelString: "GDP (PPP)"
            }
          }]
        }
      }
    });
    
    Chart.plugins.register({
      afterDatasetsDraw: function(chart, easing) {
        var ctx = chart.ctx;
    
        chart.data.datasets.forEach(function(dataset, i) {
          var meta = chart.getDatasetMeta(i);
          if (meta.type == "bubble") { //exclude scatter
            meta.data.forEach(function(element, index) {
              // Draw the text in black, with the specified font
              ctx.fillStyle = 'rgb(0, 0, 0)';
              var fontSize = 13;
              var fontStyle = 'normal';
              var fontFamily = 'Helvetica Neue';
              ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);
    
              // Just naively convert to string for now
              var dataString = dataset.data[index].toString();
              // Make sure alignment settings are correct
              ctx.textAlign = 'center';
              ctx.textBaseline = 'middle';
    
              var padding = 15;
              var position = element.tooltipPosition();
              ctx.fillText(dataset.title, position.x, position.y - (fontSize / 2) - padding);
            });
          } //if
        });
      }
    });
    

答案 1 :(得分:0)

ChartJs现在有一个插件。

https://github.com/chartjs/chartjs-plugin-datalabels

只需使用nuget或bower安装它并添加它的引用。它会自动将z设置为标签