Десятичные числа по оси X с использованием линейного графика GoogleVis - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь построить простой линейный график с помощью R пакета GoogleVis.На моем графике моя ось X является переменной "год".Итак, когда я строю график, используя год как «двойной», график отображает десятичные дроби, которых нет в данных, следующим образом:

enter image description here

Затем я попыталсяиспользовать мутировать и преобразовывать год в фактор.Итак, я решил проблему «десятичных дробей», но получил некоторые пробелы в графе = |, следующим образом: enter image description here

Вот воспроизводимый код:

library(dplyr)
library(googleVis)

   # Simple data
   df <- tribble(
     ~year, ~value,
     2014,   15,
     2015,   18,
     2016,   14,
     2017,   25
   )

   # X axis with decimals
   df %>% gvisLineChart() %>% plot()

   # X axis with white spaces
   df %>% mutate(year = as.factor(year)) %>% gvisLineChart() %>% plot()

Кто-нибудь знает, как мне помочь?Я хотел бы продолжать использовать один и тот же пакет (googleVis), и я не хочу, чтобы "десятичные дроби" и "пробелы" в оси абсцисс.

Заранее спасибо.Владимир.

ИЗД.

Код после комментариев: df %>% gvisLineChart(., options = list(hAxis = "{format: '0', ticks: data.getDistinctValues(0)}")) %>% plot()

1 Ответ

0 голосов
/ 01 октября 2018

, чтобы удалить десятичные дроби, используйте следующую опцию конфигурации при рисовании диаграммы.

hAxis: {
  format: '0'
}

см. Следующий рабочий фрагмент ...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ["year", "value"],
    [2014,  15],
    [2015,  18],
    [2016,  14],
    [2017,  25],
  ]);

  var options = {
    hAxis: {
      format: '0'
    },
    height: 288,
    vAxis: {
      format: '0',
      viewWindow: {
        min: 10,
        max: 30
      }
    }
  };

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

однако иногда это может привести к повторению меток.
хотя десятичное место не отображается,
диаграмма по-прежнему используетзначения, такие как -> 2014.0, 2014.5, 2015.0, 2015.5.
, что приводит к повторным меткам -> 2014, 2014, 2015, 2015

, чтобы гарантировать, что метки не повторяются, вы можете использовать опцию ticks.
ticks - это массив значений, которые будут использоваться на оси.

hAxis: {
  format: '0',
  ticks: [2014, 2015, 2016, 2017]
}

также существует метод таблицы данных, который может динамически создавать этот массив -> getDistinctValues(columnIndex)

, см. Следующий рабочий фрагмент для примера ...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ["year", "value"],
    [2014,  15],
    [2015,  18],
    [2016,  14],
    [2017,  25],
  ]);

  var options = {
    hAxis: {
      format: '0',
      ticks: data.getDistinctValues(0)
    },
    height: 288,
    vAxis: {
      format: '0',
      viewWindow: {
        min: 10,
        max: 30
      }
    }
  };

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

примечание: пробел является результатом преобразования чисел года в строки
, как показано в следующем фрагменте.

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ["year", "value"],
    ['2014',  15],
    ['2015',  18],
    ['2016',  14],
    ['2017',  25],
  ]);

  var options = {
    height: 288,
    vAxis: {
      format: '0',
      viewWindow: {
        min: 10,
        max: 30
      }
    }
  };

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

Строки на оси приводят к дискретной оси,
числам * непрерывной оси.

опции format и ticks не поддерживаются по дискретной оси '...

...