【问题标题】:Google Charts - HTML axis label and titleGoogle Charts - HTML 轴标签和标题
【发布时间】:2017-06-26 16:25:37
【问题描述】:

所以我试图在谷歌图表中制作 html 轴标签。但是,似乎不支持将轴标签或标题创建为 HTML 对象。标题很容易修复,只需将其作为单独的 HTML 对象添加到页面中,但轴标签更具挑战性。有没有人能够做到这一点?作为示例,下面的 jsfiddle 应该显示当您尝试使用简单的 sub 和 sup html 标签时会发生什么。

https://jsfiddle.net/jqmya8j9/1/

google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(function () {
    var data = [['X','Y']], i, options, 
        chart, dataTable;
    for (i = 0; i < 20; i += 1) {
      data.push([i, i * i]);
    }
    dataTable =
      google.visualization.arrayToDataTable(data);

    options = {
      legend: 'none',
      title: 'X<sub>m</sub> versus X<sup>2</sup>',

      //best guess, does nothing
      titleTextStyle: {isHtml: true},

      hAxis: {title: 'X<sub>m</sub>'},
      vAxis: {title: 'X<sup>2</sup>'}
    };

  chart = new 
    google.visualization.ScatterChart(document.body);
  chart.draw(dataTable, options);
});

基于以下答案(谢谢!),以及我实际在做什么,我为此使用 _{} 和 ^{} 而不是 和

编写了以下一般规则

https://jsfiddle.net/jqmya8j9/2/

google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(function () {
    var data = [['X','Y']], i, options, 
        chart, dataTable;
    for (i = 0; i < 20; i += 1) {
    data.push([i, i * i]);
    }
    dataTable =
    google.visualization.arrayToDataTable(data);

  options = {
        legend: 'none',
    title: 'X_{m} versus X^2',
        hAxis: {title: 'X_m'},
    vAxis: {title: 'X^{2}'}
    };

  chart = new 
    google.visualization.ScatterChart(document.body);

    google.visualization.events.addListener(chart, 'ready', function () {
      $.each($('text'), function (index, label) {
        var labelText = $(label).text();
        if (labelText.match(/_|\^/)) {
                    labelText = labelText.replace(/_([^\{])|_\{([^\}]*)\}/g, '<tspan style="font-size: smaller;" baseline-shift="sub">$1$2</tspan>')
                    labelText = labelText.replace(/\^([^\{])|\^\{([^\}]*)\}/g, '<tspan style="font-size: smaller;" baseline-shift="super">$1$2</tspan>')
          $(label).html(labelText);
        }
      });
    });

  chart.draw(dataTable, options);
});

【问题讨论】:

    标签: charts google-visualization


    【解决方案1】:

    标签只接受文本...

    图表是用svg绘制的,可以在'ready'事件触发时手动更改

    标签将是&lt;text&gt; 元素
    要更改内联字体样式,请在 &lt;text&gt; 中使用 svg &lt;tspan&gt; 元素

    例如

    <text>X<tspan baseline-shift="super">m</tspan></text>
    

    请参阅以下工作 sn-p...

    google.charts.load('current', {
      callback: function () {
        var data = [['X','Y']], i, options,
            chart, dataTable;
        for (i = 0; i < 20; i += 1) {
          data.push([i, i * i]);
        }
        dataTable = google.visualization.arrayToDataTable(data);
        options = {
          legend: 'none',
          title: 'Xm versus X2',
          hAxis: {title: 'Xm'},
          vAxis: {title: 'X2'}
        };
    
        chart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
    
        google.visualization.events.addListener(chart, 'ready', function () {
          $.each($('text'), function (index, label) {
            var labelText = $(label).text();
            if (labelText.indexOf('X') > -1) {
              labelText = labelText.replace(new RegExp(/m/g), '<tspan baseline-shift="super">m</tspan>');
              labelText = labelText.replace(new RegExp(/2/g), '<tspan baseline-shift="super">2</tspan>');
              $(label).html(labelText);
            }
          });
        });
    
        chart.draw(dataTable, options);
      },
      packages: ['corechart']
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart_div"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2014-09-22
      • 1970-01-01
      • 2019-04-13
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多