javascript - 如何在谷歌区域或折线图上显示单个数据点

标签 javascript google-visualization

我已经尝试了所有可能的配置来获得 Google Area Chart显示一个点,但没有任何效果。我也完全接受使用 Google Line Chart 的任何解决方案。只要它有一个填充区域。但是,我也找不到使用折线图进行这项工作的解决方案。

已经尝试设置 pointSize 以及如果只有一行则有条件地设置 pointSize。尝试了多种不同的图表配置方式,包括。

var data = new google.visualization.DataTable();
data.addColumn('date', 'Updated');
data.addColumn('number', 'Amount');
data.addRow([new Date(1548266417060.704),100]);

var mets = [['Updated', 'Amount'], [new Date(1548266417060.704),100]];
var data = google.visualization.arrayToDataTable(mets);

Area Chart Example JSFiddle

Line Chart Example JSFiddle
此折线图需要填充线下方的区域,但我无法确定如何使用此 API 执行此操作

enter image description here Example of the chart I'm trying to achieve using CanvasJs但我正在尝试使用 Google Visualization API 实现它,并且如果图表上只有一个点,则允许显示一个点

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Updated', 'Amount'],
          [new Date(1548266417060.704),100],
          //[new Date(1548716961817.513),100],
        ]);

        var options = {
          title: 'Company Performance',
          hAxis: {title: 'Year',  titleTextStyle: {color: '#333'}},
          pointSize: 5,
        };

        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }

我希望图表在只有一个数据行时显示一个点。正如您在 JSFiddle 中看到的那样当只有一行时,什么也不会出现,但是只要您取消对第二行的注释,一切都会正常进行。

最佳答案

最新版本的谷歌图表有一个错误
当 x 轴是连续轴(日期、数字、非字符串等)时,
并且数据表中只有一行,
你必须在轴上设置一个显式 View 窗口 --> hAxis.viewWindow

使用只有一行的日期类型,
首先,使用数据表方法 --> getColumnRange
这将返回一个具有 x 轴 minmax 属性的对象

然后我们可以将max增加一天并将min减少一天,
并将其用于我们的 View 窗口。

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

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Updated', 'Amount'],
    [new Date(1548266417060.704),100]
  ]);

  var oneDay = (24 * 60 * 60 * 1000);
  var dateRange = data.getColumnRange(0);
  if (data.getNumberOfRows() === 1) {
    dateRange.min = new Date(dateRange.min.getTime() - oneDay);
    dateRange.max = new Date(dateRange.max.getTime() + oneDay);
  }

  var options = {
    title: 'Company Performance',
    hAxis: {
      title: 'Year',
      titleTextStyle: {color: '#333'},
      viewWindow: dateRange
    },
    pointSize: 5
  };

  var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>


如果我们回到旧版本 ('45'),您会注意到,
单个日期行显示没有问题...

google.charts.load('45', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Updated', 'Amount'],
    [new Date(1548266417060.704),100]
  ]);

  var options = {
    title: 'Company Performance',
    hAxis: {
      title: 'Year',
      titleTextStyle: {color: '#333'},
    },
    pointSize: 5
  };

  var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

关于javascript - 如何在谷歌区域或折线图上显示单个数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411941/

相关文章:

javascript - 如何获取数据 React-native - fetch?

javascript - 传递给 fn.apply 的标准默认第一个参数

javascript - 如何使用带超时的 localStorage 创建元素显示和隐藏

jquery - Google Visualization - 从 html 表中获取数据

php - 谷歌图表; arrayToDataTable,如何指定列类型?

javascript - 温泉 UI 导航错误 : You can not supply no "ons-page" element to "ons-navigator" when back to first page

javascript - 如何获取数组 Node.js 中的最后一项?

json - 从 Google Charts 的 SQL 查询格式化 ColdFusion JSON

r - 将 googleVis 图表嵌入网站

javascript - 使用谷歌图表绘制选举数据