使用vue-google-charts自定义工具提示

时间:2019-01-27 15:50:42

标签: vue.js charts google-visualization

我正在使用Vue.js和Vue的Google图表包装库vue-google-charts绘制基本折线图。数据采用时间序列的形式,我对工具提示的显示不满意:对于图表上的某点,工具提示的格式为:“ 2,016.957价格:$ 1025”(对应于12月, 2016)。

我想要的工具提示具有以下两种格式之一: “ 2016年12月价格:1025美元”或“ 2016.957价格:1025美元”。

虽然我可以使用标准的Google Charts库实现这两种格式的显示,但似乎找不到使用vue-google-charts的解决方案。主要问题是google.visualization.DataTable()是在后台创建的;我所能做的就是将一个数组传递给它,并且无法自定义列或数据表。因此,我无法按照此处所述进行操作:https://developers.google.com/chart/interactive/docs/customizing_tooltip_content#customizing-tooltip-content

我探索的另一个解决方案是在时间轴上使用Date对象而不是小数。但是,工具提示的格式为“ 2016年12月1日,价格:$ 1025”,这也不是我想要的。同样,可以使用基本库(https://developers.google.com/chart/interactive/docs/reference#dateformatter)解决此问题,但不能使用Vue的包装器库解决该问题。

有人知道让您自定义vue-google-charts库中的工具提示吗?

<GChart
    type="LineChart"
    :data="chartData"
    :options="chartOptions"
 />
export default {
   data () {
        return {
      // Array will be automatically processed with visualization.arrayToDataTable function
      chartData: [
        ['Time', 'Price'],
        ['2014.042', 1000], //january 2014
        ['2014.125', 1170], //february 2014
        ['2014.208', 1170], //march 2014
        ['2014.292', 1170], //april 2014
        ['2014.375', 1170], ...
        ['2014.458', 660],
        ['2014.542', 1030],
        ['2014.625', 1170],
        ['2014.708', 1170],
        ['2014.792', 1170],
        ['2014.875', 1170],
        ['2014.958', 1170], //december 2014
        ['2015.042', 1170],
      ],
      chartOptions: {
        chart: {
          title: 'Company Performance',
          subtitle: 'Sales, Expenses, and Profit: 2014-2017',
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

默认工具提示将在数据表中显示每个单元格的格式化值。

建立数据时,
您可以使用对象符号来提供值(v:)和格式化值(f:)。

[{v: 2014.042, f: 'Jan, 2014'}, {v: 1000, f: '$1,000'}],

这允许您对轴使用任何格式,
但是工具提示的值格式不同。
以下任一将产生相同的工具提示。

[{v: 2014.042, f: 'Jan, 2014'}, {v: 1000, f: '$1,000'}],

[{v: new Date(2014, 0), f: 'Jan, 2014'}, {v: 1000, f: '$1,000'}],

请参阅以下工作片段...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Time', 'Price'],
    [{v: new Date(2014, 0), f: 'Jan, 2014'}, {v: 1000, f: '$1,000'}],
    [{v: new Date(2014, 1), f: 'Feb, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 2), f: 'Mar, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 3), f: 'Apr, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 4), f: 'May, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 5), f: 'Jun, 2014'}, {v: 660, f: '$660'}],
    [{v: new Date(2014, 6), f: 'Jul, 2014'}, {v: 1030, f: '$1,030'}],
    [{v: new Date(2014, 7), f: 'Aug, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 8), f: 'Sep, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 9), f: 'Oct, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 10), f: 'Nov, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2014, 11), f: 'Dec, 2014'}, {v: 1170, f: '$1,170'}],
    [{v: new Date(2015, 0), f: 'Jan, 2015'}, {v: 1170, f: '$1,170'}],
  ]);

  var chart = new google.visualization.LineChart(document.getElementById('chart'));
  chart.draw(data, {
    hAxis: {
      format: 'yyyy.MM'
    }
  });
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>