Краткое руководство по использованию электронных диаграмм и vue-echarts

Суть каждого приложения - отображение данных для пользователей. Иногда очень сложно отобразить эти данные с помощью текста. Диаграммы и графики - отличный способ визуально представить эти данные. В этой статье я покажу вам, как легко создавать визуально привлекательные диаграммы в вашем приложении Vue.js.

Начиная

Я буду использовать Vue CLI, чтобы быстро создать стартовое приложение. Я буду использовать как электронные диаграммы, так и vue-диаграммы, чтобы добавить диаграммы в наше стартовое приложение. Итак, приступим.

Установите Vue CLI с помощью этой команды:

npm install @vue/cli

Затем мы воспользуемся Vue CLI, чтобы создать приложение Vue, которое мы будем использовать. Мы создадим приложение с помощью этой команды:

vue create vue-echarts-demo

Vue CLI спросит вас, хотите ли вы использовать предустановку по умолчанию или выбрать функции вручную. Выберите default.

Это создаст наше приложение в папке с именем vue-echarts-demo. Перейдите в этот каталог с помощью этой команды:

cd vue-echarts-demo

Установка пакетов диаграмм

eCharts - одна из крупнейших и наиболее широко используемых графических программ. Мы будем использовать это в нашем приложении vue. Чтобы его можно было использовать во Vue, мы также будем использовать продукт под названием vue-echarts. Vue-echarts - это оболочка для eCharts, позволяющая ему работать в среде Vue.

Вы можете установить их обе с помощью этой команды:

npm install echarts vue-echarts

Настройка пакетов диаграмм

Теперь, когда у нас установлены пакеты диаграмм, нам нужно установить их в нашем приложении. Откройте каталог src и создайте новый каталог с именем plugins. Внутри нового каталога плагинов создайте файл с именем echarts.js.

В этом файле мы создадим компонент Vue для eCharts. Компонент будет глобально доступен в нашем приложении. Шаги, которые нам нужно предпринять, - это импортировать как vue, так и vue-echarts. Затем мы импортируем части eCharts, которые будем использовать. Наша первая диаграмма будет гистограммой, поэтому нам нужно будет импортировать и ее. Наконец, мы создаем глобальный компонент с именем chart. Вот как должен выглядеть ваш файл echarts.js:

import Vue from 'vue';
import Echarts from 'vue-echarts';

import 'echarts/lib/chart/bar';

Vue.component('chart', Echarts);

Импорт файла нашего плагина

Мы должны сделать так, чтобы Vue узнал о только что созданном файле. Мы делаем это, импортируя его в файл main.js. Откройте файл main.js и добавьте следующую строку после последнего оператора импорта:

import "@/plugins/echarts";

Теперь мы готовы создать нашу первую диаграмму.

Создание гистограммы

Мы будем создавать все наши диаграммы в компоненте HelloWorld. Этот компонент был создан автоматически, когда мы использовали Vue CLI для создания нашего приложения.

Откройте файл HelloWorld.vue и сделайте следующее:

  • удалить весь HTML внутри тегов шаблона
  • удалить реквизит в тегах скрипта
  • удалить весь CSS в тегах стиля

Ваш файл должен выглядеть так:

<template>
</template>

<script>
export default {
  name: 'HelloWorld',
}
</script>

<style scoped>
</style>

В нашем плагине мы назвали наш компонент chart. Vue-echarts строит диаграммы, используя данные, которые вы передаете в него, используя свойство options. Давайте воспользуемся этим, чтобы создать HTML-код для нашей первой диаграммы. Добавьте следующий код в теги шаблона:

<chart :options="chartOptionsBar"></chart>

Определение нашей диаграммы

Далее нам нужно определить данные, которые будут использоваться для создания нашей диаграммы. Внутри тегов скрипта создайте новый объект данных с записью для chartOptionsBar. Ваш тег скрипта должен выглядеть так:

<script>
export default {
  name: 'HelloWorld',
  data: () => ({
    chartOptionsBar: {}
  })
}
</script>

Создание данных диаграммы

Наша первая гистограмма будет содержать квартальные данные о продажах вымышленной компании. Каждый квартал будет отображаться на оси X диаграммы. Сумма продаж будет отображаться на оси Y диаграммы.

Давайте сначала определим нашу xAxis. Мы предоставим массив данных, который будет содержать записи за каждый квартал года. Добавьте к нашему объекту chartOptionsBar следующее:

chartOptionsBar: {
  xAxis: {
    data: ['Q1', 'Q2', 'Q3', 'Q4']
  }
}

Наша yAxis будет отображать только объем продаж за каждый квартал. По этой причине нам не нужно создавать для него массив данных. Вместо этого мы сообщаем ему, что он отобразит value. Добавьте к нашему объекту chartOptionsBar следующее:

chartOptionsBar: {
  xAxis: {
    data: ['Q1', 'Q2', 'Q3', 'Q4']
  },
  yAxis: {
    type: 'value'
  }
}

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

chartOptionsBar: {
  xAxis: {
    data: ['Q1', 'Q2', 'Q3', 'Q4']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      type: 'bar',
      data: [63, 75, 24, 92]
    }
  ]
}

Вы можете запустить свой сервер с помощью команды:

npm run serve

Затем откройте в браузере адрес localhost: 8080, и вы увидите свою первую диаграмму, которая выглядит следующим образом:

Добавление стиля в наши диаграммы

По умолчанию vue-echarts устанавливает ширину диаграммы 600 пикселей. Я бы предпочел, чтобы наши диаграммы были во всю ширину контейнера. Для этого я собираюсь поместить диаграмму в div. Я дам этому div класс chart-wrapper. Теперь мой шаблон выглядит так:

<template>
  <div class="chart-wrapper">
    <chart :options="chartOptionsBar"></chart>
  </div>
</template>

Затем я хочу добавить немного стиля новому классу chart-wrapper. Я сделаю этот класс шириной, равной размеру экрана, и высотой 700 пикселей. Вот стиль, который я добавил:

.chart-wrapper {
  width: 100%;
  height: 700px;
}

Vue-echarts добавляет класс echarts ко всем своим диаграммам. Мы также стилизуем это в нашем CSS. Мы скажем этому классу, чтобы он занимал 100% высоты и ширины своего контейнера, который равен chart-wrapper. Вот CSS, который я добавил:

.echarts {
  width: 100%;
  height: 100%;
}

Пока мы добавляем стили, я хочу заменить логотип Vue заголовком. Откройте файл App.vue. Удалите тег ‹img› и замените его на:

<h1>Vue eCharts Demo</h1>

Теперь наша диаграмма выглядит так:

Добавление заголовка и цвета

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

Каждый компонент eCharts, который вы хотите использовать, необходимо импортировать. Заголовок - это компонент, поэтому его нужно импортировать. Откройте файл echarts.js и добавьте следующую строку:

import 'echarts/lib/component/title';

Затем мы можем добавить заголовок к нашей гистограмме. Вернувшись в компонент HelloWorld.vue, давайте добавим заголовок к нашему объекту chartOptionsBar.

chartOptionsBar: {
  xAxis: {
    data: ['Q1', 'Q2', 'Q3', 'Q4']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      type: 'bar',
      data: [63, 75, 24, 92]
    }
  ],
  title: {
    text: 'Quarterly Sales Results'
  }
}

По умолчанию eCharts помещает заголовок в левую часть гистограммы. Вот как сейчас выглядит наша диаграмма:

Мне не нравится, как выглядит это название, поэтому давайте его изменим. Я хочу, чтобы заголовок имел больший размер шрифта и был по центру. На диаграмме есть опция x, которая представляет горизонтальную плоскость. Я хочу, чтобы название было сосредоточено на этом. Чтобы заголовок имел больший размер шрифта, нам нужно добавить textStyle. Последнее изменение, которое я хочу сделать, - установить полосу другого цвета. Вот как выглядят мои варианты сейчас:

chartOptionsBar: {
  xAxis: {
    data: ['Q1', 'Q2', 'Q3', 'Q4']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      type: 'bar',
      data: [63, 75, 24, 92]
    }
  ],
  title: {
    text: 'Quarterly Sales Results',
    x: 'center',
    textStyle: {
      fontSize: 24
    }
  },
  color: ['#127ac2']
}

Вот окончательная версия моей гистограммы:

Создание линейной диаграммы

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

Во-первых, нам нужно создать новый div-обертку диаграммы и новый элемент диаграммы. Новый элемент диаграммы получит свои параметры от объекта chartOptionsLine. Вот как сейчас выглядит мой html-код:

<div>
  <div class="chart-wrapper">
    <chart :options="chartOptionsBar"></chart>
  </div>
  <hr />
  <div class="chart-wrapper">
    <chart :options="chartOptionsLine"></chart>
  </div>
</div>

Затем в нашем объекте данных создайте новый объект chartOptionsLine. Вместо создания нового объекта скопируйте существующий объект chartOptionsBar. Переименуйте копию в chartOptionsLine. На данный момент нам нужно только последовательно менять тип от полосы к строке. Вот как выглядит наш объект chartOptionsLine:

chartOptionsLine: {
  xAxis: {
    data: ["Q1", "Q2", "Q3", "Q4"]
  },
  yAxis: {
    type: "value"
  },
  series: [
    {
      type: "line",
      data: [63, 75, 24, 92]
    }
  ],
  title: {
    text: "Quarterly Sales Results",
    x: "center",
    textStyle: {
      fontSize: 24
    }
  },
  color: ["#127ac2"]
}

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

Откройте echarts.js и добавьте следующую строку:

import 'echarts/lib/chart/line';

Теперь у нас есть этот линейный график:

Изменить заголовок и данные

Мы хотим, чтобы линейная диаграмма отображала ежемесячные цены на акции вымышленной компании. Нам понадобится более четырех точек данных. У нас будет 12 точек данных на четырех линейном графике. Мы также хотим, чтобы заголовок, отображаемый на оси x, отображал месяцы года, а не кварталы. Нам также нужно изменить заголовок нашего графика.

Мы можем обновить наш chartOptionsLine следующими значениями:

chartOptionsLine: {
  xAxis: {
    data: [
      "Jan",
      "Feb",
      "Mar",
      "Apr",
      "May",
      "Jun",
      "Jul",
      "Aug",
      "Sep",
      "Oct",
      "Nov",
      "Dec"
    ]
  },
  yAxis: {
    type: "value"
  },
  series: [
    {
      type: "line",
      data: [55, 72, 84, 48, 59, 62, 87, 75, 94, 101, 127, 118]
    }
  ],
  title: {
    text: "Monthly Stock Prices",
    x: "center",
    textStyle: {
      fontSize: 24
    }
  },
  color: ["#127ac2"]
}

Теперь наша линейная диаграмма выглядит так:

Доступ к документации по диаграммам

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

Если вы хотите узнать о других типах диаграмм и доступных опциях, вы можете прочитать их документацию. Вот ссылка на документацию.

Получить код

Весь код для этой статьи можно найти в моем аккаунте GitHub.

Заключение

Очень легко добавить пользовательские диаграммы и графики в приложение Vue.js с помощью eCharts и vue-echarts. Диаграммы позволяют визуализировать данные для просмотра пользователями.

Если у вас есть отзывы, оставьте комментарий ниже. Пожалуйста, аплодируйте этой статье. Спасибо за прочтение.

Еще статьи, которые вы могли бы прочитать