Nano Hash - криптовалюты, майнинг, программирование

Как добавить штриховую сетку на диаграмму Google после загрузки?

Я хочу добавить штриховую линию сетки на диаграмму Google

это варианты, которые я использую сейчас

hAxis: {
        textStyle: { color: '#757575', },
        titleTextStyle: { color: '#757575',},
        minorGridlines: { color: 'transparent' },
        format : "MMM yy",
        gridlines: {color: '#f1efef',},
      },
      vAxis: {
        format: '#\'%\'',    
        textStyle: { color: '#757575' },
        titleTextStyle: { color: '#757575' },
        minorGridlines: { color: 'transparent' },
        gridlines: {color: '#f1efef',},
      },
} 

вот пример


  • Прочтите документацию и нажмите CTRL+F, чтобы узнать, что вам нужно: developers.google.com/ диаграмма/интерактив/документы/галерея/линейная диаграмма. Я вижу, что вы новый пользователь - для вопросов, на которые можно легко ответить с помощью простого поиска в Google и нажатия на самый первый ответ, возможно, сделайте это вместо публикации. Диаграммы Google тщательно документированы, нет никаких причин, чтобы просто не получить эту информацию самостоятельно в документации, как это делают все программисты, когда они чего-то не знают. 20.03.2020
  • Спасибо за быстрый ответ, я прочитал документ, но не получил ожидаемого результата 20.03.2020
  • Затем покажите, что вы уже пробовали в вопросе: stackoverflow.com/help/how-to-ask 20.03.2020
  • Извините, мой первый комментарий к вам был излишне грубым. Вы новый пользователь, и я должен был быть более осведомлен об этом (и, вероятно, также не комментировать, как только проснусь). В настоящее время я ищу конкретную часть документации, которая вам нужна. Пожалуйста, отредактируйте свой вопрос и включите то, что вы пробовали. 20.03.2020

Ответы:


1

нет готовых опций конфигурации для изменения стиля линий сетки.

однако мы можем изменить линии сетки вручную в svg, в событии диаграммы 'ready'.

проблема здесь в том, что для линий сетки Google использует элемент <rect>,
либо с высотой (vAxis), либо с шириной (hAxis), равной 1, и без границы.
поэтому цвет заливки — это то, что на самом деле делает линию, не штрих или граница.

чтобы эти <rect> элементы отображались пунктирными,
нам нужно использовать шаблон заливки, как показано ниже.

<svg style="width:0;height:0;position:absolute;" aria-hidden="true" focusable="false">
  <pattern id="pattern-fill" x="0" y="0" width="8" height="8" patternUnits="userSpaceOnUse" patternTransform="rotate(30)">
     <rect x="0" y="0" width="4" height="8" style="stroke: none; fill: #f1efef;" />
  </pattern>
</svg>

здесь мы используем отдельный элемент <svg>, который скрыт от страницы.
затем мы используем шаблон для изменения линий сетки.

line.setAttribute('fill', 'url(#pattern-fill) #f1efef');

где #f1efef выше используется как запасной вариант для старых браузеров, которые не поддерживают шаблон.

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

google.charts.load('current', {
  packages: ['corechart', 'line']
}).then(function () {
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'X');
  data.addColumn('number', 'Y0');
  data.addColumn('number', 'Y1');

  data.addRows([
    [0, 0, 0],    [1, 10, 5],   [2, 23, 15],  [3, 17, 9],   [4, 18, 10],  [5, 9, 5],
    [6, 11, 3],   [7, 27, 19],  [8, 33, 25],  [9, 40, 32],  [10, 32, 24], [11, 35, 27],
    [12, 30, 22], [13, 40, 32], [14, 42, 34], [15, 47, 39], [16, 44, 36], [17, 48, 40],
    [18, 52, 44], [19, 54, 46], [20, 42, 34], [21, 55, 47], [22, 56, 48], [23, 57, 49],
    [24, 60, 52], [25, 50, 42], [26, 52, 44], [27, 51, 43], [28, 49, 41], [29, 53, 45],
    [30, 55, 47], [31, 60, 52], [32, 61, 53], [33, 59, 51], [34, 62, 54], [35, 65, 57],
    [36, 62, 54], [37, 58, 50], [38, 55, 47], [39, 61, 53], [40, 64, 56], [41, 65, 57],
    [42, 63, 55], [43, 66, 58], [44, 67, 59], [45, 69, 61], [46, 69, 61], [47, 70, 62],
    [48, 72, 64], [49, 68, 60], [50, 66, 58], [51, 65, 57], [52, 67, 59], [53, 70, 62],
    [54, 71, 63], [55, 72, 64], [56, 73, 65], [57, 75, 67], [58, 70, 62], [59, 68, 60],
    [60, 64, 56], [61, 60, 52], [62, 65, 57], [63, 67, 59], [64, 68, 60], [65, 69, 61],
    [66, 70, 62], [67, 72, 64], [68, 75, 67], [69, 80, 72]
  ]);

  var options = {
    hAxis: {
      textStyle: { color: '#757575', },
      titleTextStyle: { color: '#757575',},
      minorGridlines: { color: 'transparent' },
      format : "MMM yy",
      gridlines: {color: '#f1efef',},
    },
    vAxis: {
      format: '#\'%\'',
      textStyle: { color: '#757575' },
      titleTextStyle: { color: '#757575' },
      minorGridlines: { color: 'transparent' },
      gridlines: {color: '#f1efef',},
    }
  };

  var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

  google.visualization.events.addListener(chart, 'ready', function () {
    var gridLines = chart.getContainer().getElementsByTagName('rect');
    Array.prototype.forEach.call(gridLines, function(line) {
      if (line.getAttribute('fill') === '#f1efef') {
        line.setAttribute('fill', 'url(#pattern-fill) #f1efef');
      }
    });
  });

  chart.draw(data, options);
});
rect {
  stroke-dasharray: 10 5;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
<svg style="width:0;height:0;position:absolute;" aria-hidden="true" focusable="false">
  <pattern id="pattern-fill" x="0" y="0" width="8" height="8" patternUnits="userSpaceOnUse" patternTransform="rotate(30)">
     <rect x="0" y="0" width="4" height="8" style="stroke: none; fill: #f1efef;" />
  </pattern>
</svg>

20.03.2020
  • Спасибо за ответ ! Это мне очень помогает :) 23.03.2020

  • 2

    Вы должны добавить строкуDashStyle в серию.

    Как в примере из: https://developers.google.com/chart/interactive/docs/lines#dashed-lines

    var options = {
              hAxis: { maxValue: 10 },
              vAxis: { maxValue: 18 },
              chartArea: { width: 380 },
              lineWidth: 4,
              series: {
                0: { lineDashStyle: [1, 1] },
                1: { lineDashStyle: [2, 2] },
                2: { lineDashStyle: [4, 4] },
                3: { lineDashStyle: [5, 1, 3] },
                4: { lineDashStyle: [4, 1] },
                5: { lineDashStyle: [10, 2] },
                6: { lineDashStyle: [14, 2, 7, 2] },
                7: { lineDashStyle: [14, 2, 2, 7] },
                8: { lineDashStyle: [2, 2, 20, 2, 20, 2] }
              },
              colors: ['#e2431e', '#f1ca3a', '#6f9654', '#1c91c0',
                       '#4374e0', '#5c3292', '#572a1a', '#999999', '#1a1a1a'],
            };
    
    20.03.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..