Хобрук: Ваш путь к мастерству в программировании

Электронные диаграммы. Можно ли сделать такой график?

введите описание изображения здесь

Можно ли сделать такую ​​диаграмму?

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

Я играл с areaStyle и visualMap, но не могу найти правильного решения.


Ответы:


1

Да, это возможно. И рисовать это несложно, но немного сложнее поддерживать дальше. Я не уверен, правильно ли понял, какую модель данных вы будете использовать, но я нарисовал точно такую ​​же форму, как на вашем рисунке.

введите описание изображения здесь

var myChart = echarts.init(document.getElementById('main'));
var axisData = [0,1,2,3,4,5,6,7];

var colors = {
  green: '#75e160',
  red:   '#d8403e',
  blue:  '#7447c8',
  black: '#000000'
};

function upperDataGenerator(extremum) {
  var data = [];
  for (var i = 0; i <= extremum; i += 0.01) { data.push([i, -Math.sin(i)]) }
  return data
}

function lowerDataGenerator(extremum){
  var data = [];
  for (var i = 0; i <= extremum; i += 0.01) { data.push([i, Math.sin(i)]) }
  return data
}

var maxChartValue = 3 * Math.PI

var dataUpper = upperDataGenerator(maxChartValue);
var dataLower = lowerDataGenerator(maxChartValue);

option = {
  xAxis: { data: axisData, type: 'value', max: 'dataMax'  },
  yAxis: { data: axisData, type: 'value', min: -3, max: 3 },
  series: [
    {
      type: 'line',
      data: dataUpper,
      showSymbol: false,
      areaStyle: {},
      lineStyle: { color: 'blue' }
    },
    {
      type: 'line',
      data: dataLower,
      showSymbol: false,
      areaStyle: {},
      lineStyle: { color: colors.black }
    }
  ],
   visualMap: [
    {
      type: 'piecewise',
      show: false,
      seriesIndex: [0,1],
      orient: 'vertical',
      pieces: [
        {
          min:  0,
          max:  0.5,
          color: colors.black
        },
      ]
    },
    {
      type: 'piecewise',
      show: false,
      seriesIndex: [1],
      dimension: 0,
      pieces: [
        {
          min:  0,
          max:  maxChartValue / 3,
          color: colors.green
        },
        {
          min: maxChartValue / 3,
          max: maxChartValue - maxChartValue / 3,
          color: colors.red
        },
        {
          min: maxChartValue / 2,
          max: maxChartValue,
          color: colors.green
        },
      ],
    },
    {
      type: 'piecewise',
      show: false,
      seriesIndex: [0],
      dimension: 0,
      pieces: [
        {
          min:  0,
          max:   maxChartValue / 3,
          color: colors.green
        },
        {
          min: maxChartValue / 3,
          max: maxChartValue - maxChartValue / 3,
          color: colors.red
        },
        {
          min: maxChartValue / 2,
          max: maxChartValue,
          color: colors.green
        },
      ],
    },
    ]
  };

  myChart.setOption(option);
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.7.0/echarts.min.js"></script>
<div id="main" style="width: 800px;height:600px;"></div>

23.05.2020
  • Хороший пример, но это не то, что мне нужно. Еще один случай, когда все значения диаграммы не будут пересекать ось x и будут выше 0. 24.05.2020
  • Вы можете изменять настройки visualMap и серий во время выполнения по своему желанию, это просто пример для вашего изучения, а не готовый к развертыванию продукт с рынка. 24.05.2020
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..