Echarts Введение в технологию визуализации

Знакомство с панелью визуализации

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

01 – Использование технологий

Для реализации этого проекта необходимы знания:

  • макет div + css
  • гибкий макет
  • Меньше
  • Нативное использование js + jquery
  • рем-адаптация
  • основы диаграмм

02- План адаптации кейса

  • Проект дизайна 1920px

    1. flexible.js делит экран на 24 равные части

    2. Базовое значение плагина cssrem — 80 пикселей.

      Плагин-Кнопка Конфигурация-Настроить расширенные настройки-Настройки в Root Font Size.

      Но не забудьте перезапустить программное обеспечение vscode, чтобы оно вступило в силу.

03-Основные настройки

  • body устанавливает фоновое изображение, масштабированное до 100%, высота строки 1,15
  • CSS-инициализация

04-макет заголовка

  • высота 100px
  • Фоновое изображение, отображаемое внутри контейнера
  • Масштабировать до 100 %
  • часть заголовка h1 белая 38 пикселей высота строки дисплея по центру 80 пикселей
  • Модуль времени showTime размещает правую сторону на 30 пикселей, высота строки составляет 75 пикселей, цвет текста: rgba (255, 255, 255, 0,7) и размер текста 20 пикселей.
// 格式: 当前时间:2020年3月17-0时54分14秒
<script>
            var t = null;
            t = setTimeout(time, 1000);//開始运行
            function time() {
    
    
                clearTimeout(t);//清除定时器
                dt = new Date();
                var y = dt.getFullYear();
                var mt = dt.getMonth() + 1;
                var day = dt.getDate();
                var h = dt.getHours();//获取时
                var m = dt.getMinutes();//获取分
                var s = dt.getSeconds();//获取秒
                document.querySelector(".showTime").innerHTML = '当前时间:' + y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒";
                t = setTimeout(time, 1000); //设定定时器,循环运行     
            }
 </script>
  • CSS-стиль шапки
header {
    
    
  position: relative;
  height: 1.25rem;
  background: url(../images/head_bg.png) no-repeat top center;
  background-size: 100% 100%;
  h1 {
    
    
    font-size: 0.475rem;
    color: #fff;
    text-align: center;
    line-height: 1rem;
  }
  .showTime {
    
    
    position: absolute;
    top: 0;
    right: 0.375rem;
    line-height: 0.9375rem;
    font-size: 0.25rem;
    color: rgba(255, 255, 255, 0.7);
  }
}

05-основной модуль основного блока

  • Нужен отступ 10px слева и справа

  • колонка колонка контейнер, разделенная на три колонки, соотношение 3:5:3

css-стиль:

.mainbox {
    
    
  padding: 0.125rem 0.125rem 0;
  display: flex;
  .column {
    
    
    flex: 3;
  }
  &:nth-child(2) {
    
    
    flex: 5;
  }
}

06-Панель модуля общей панели

  • высота 310px
  • 1px сплошная rgba(25, 186, 139, 0.17) граница 1px
  • Есть фоновое изображение line.jpg
  • Отступы: 0 сверху, 15 пикселей снизу и 40 пикселей снизу.
  • Нижнее поле 15px.
  • Используйте поле панели до и после, чтобы сделать два верхних угла 10px и линию 2px сплошными #02a6b5
  • Добавьте новое поле до и после, чтобы сделать два нижних угла шириной и высотой 10 пикселей.
.panel {
    
    
  position: relative;
  height: 3.875rem;
  border: 1px solid rgba(25, 186, 139, 0.17);
  background: url(../images/line\(1\).png);
  padding: 0 0.1875rem 0.5rem;
  margin-bottom: 0.1875rem;
  &::before {
    
    
    position: absolute;
    top: 0;
    left: 0;
    content: "";
    width: 10px;
    height: 10px;
    border-top: 2px solid #02a6b5;
    border-left: 2px solid #02a6b5;
  }
  &::after {
    
    
    position: absolute;
    top: 0;
    right: 0;
    content: "";
    width: 10px;
    height: 10px;
    border-top: 2px solid #02a6b5;
    border-right: 2px solid #02a6b5;
  }
  .panel-footer {
    
    
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    &::before {
    
    
      position: absolute;
      bottom: 0;
      left: 0;
      content: "";
      width: 10px;
      height: 10px;
      border-bottom: 2px solid #02a6b5;
      border-left: 2px solid #02a6b5;
    }
    &::after {
    
    
      position: absolute;
      bottom: 0;
      right: 0;
      content: "";
      width: 10px;
      height: 10px;
      border-bottom: 2px solid #02a6b5;
      border-right: 2px solid #02a6b5;
    }
  }
}

07- Модуль столбчатой ​​диаграммы (макет)

  • Модуль заголовка h2 высота 48px цвет текста белый размер текста 20px

  • Высота диаграммы модуля содержимого значка 240 пикселей

  • Вышеупомянутое можно использовать как общедоступную часть панели.

  h2 {
    
    
    height: 0.6rem;
    line-height: 0.6rem;
    text-align: center;
    color: #fff;
    font-size: 20px;
    font-weight: 400;
  }
  .chart {
    
    
    height: 3rem;
    background-color: pink;
  }

08-Промежуточный макет

  • Выше нет цифрового модуля
  • Ниже приведен модуль карты карты.
  1. Числовой модуль no имеет фоновый цвет rgba(101, 132, 226, 0,1); имеет отступ 15 пикселей.
  2. Обратите внимание, что средний столбец имеет поля 15 пикселей слева и 10 пикселей справа.
  3. нет Верхний и нижний разделы в модуле — это цифры вверху (no-hd) и соответствующие текстовые описания внизу (no-bd)
  4. цифровые блоки no-hd имеют сплошную границу 1px rgba(25, 186, 139, 0,17)
  5. Цифровой модуль no-hd разделен на два небольших листа, высота каждого маленького листа составляет 80 пикселей, размер текста — 70 пикселей, цвет — #ffeb7b, а шрифт — значок шрифта electronicFont.
  6. no-hd Используйте после и до, чтобы сделать 2 маленьких угла, граница 2px сплошная #02a6b5 ширина 30px высота 10px
  7. Маленькая вертикальная линия может быть назначена первому маленькому li после Цвет фона rgba(255, 255, 255, 0.2), высота 50% сверху 25%.
  8. Также есть два маленьких li в no-bd, высота 40px, цвет текста rgba(255, 255, 255, 0.7), размер текста 18px, верхний отступ 10px
/* 声明字体*/
@font-face {
    
    
  font-family: electronicFont;
  src: url(../font/DS-DIGIT.TTF);
}

Изготовление модуля карты:

  1. Высота модуля карты составляет 810 пикселей, который содержит диаграмму из 4 блоков, поместите модуль диаграммы в сферическое поле, вращение 1, вращение 2.
  2. Размер модуля сферического изображения map1 – 518 пикселей. Необходимо добавить фоновое изображение, поскольку оно должно быть масштабировано до 100 % и помещено в положение с максимальной прозрачностью по центру.3
  3. Поверните 1 карту 2 размером 643 пикселя, чтобы добавить фоновое изображение, потому что его нужно масштабировать до 100% и расположить по центру прозрачности.6 Выполните анимацию вращения и используйте z-индекс, чтобы нажать на сферу
  4. Поворот 2. Размер карты 3 – 566 пикселей. Необходимо добавить фоновое изображение, поскольку оно должно быть масштабировано на 100 % для размещения в центре. Обратите внимание, что анимация поворота выполняется против часовой стрелки.
 <div class="no">
                <div class="no-hd">
                    <ul>
                        <li>125811</li>
                        <li>104563</li>
                    </ul>
                </div>
                <div class="no-bd">
                    <ul>
                        <li>前端需求人数</li>
                        <li>市场供应人数</li>
                    </ul>
                </div>
            </div>
            <div class="map">
                <div class="chart"></div>
                <div class="map1"></div>
                <div class="map2"></div>
                <div class="map3"></div>
            </div>

промежуточный стиль

/* 声明字体*/
@font-face {
    
    
  font-family: electronicFont;
  src: url(../font/DS-DIGIT.TTF);
}
.no {
    
    
  background: rgba(101, 132, 226, 0.1);
  padding: 0.1875rem;
  .no-hd {
    
    
    position: relative;
    border: 1px solid rgba(25, 186, 139, 0.17);
    &::before {
    
    
      content: "";
      position: absolute;
      width: 30px;
      height: 10px;
      border-top: 2px solid #02a6b5;
      border-left: 2px solid #02a6b5;
      top: 0;
      left: 0;
    }
    &::after {
    
    
      content: "";
      position: absolute;
      width: 30px;
      height: 10px;
      border-bottom: 2px solid #02a6b5;
      border-right: 2px solid #02a6b5;
      right: 0;
      bottom: 0;
    }
    ul {
    
    
      display: flex;
      li {
    
    
        position: relative;
        flex: 1;
        text-align: center;
        height: 1rem;
        line-height: 1rem;
        font-size: 0.875rem;
        color: #ffeb7b;
        padding: 0.05rem 0;
        font-family: electronicFont;
        font-weight: bold;
        &:first-child::after {
    
    
          content: "";
          position: absolute;
          height: 50%;
          width: 1px;
          background: rgba(255, 255, 255, 0.2);
          right: 0;
          top: 25%;
        }
      }
    }
  }
  .no-bd ul {
    
    
    display: flex;
    li {
    
    
      flex: 1;
      height: 0.5rem;
      line-height: 0.5rem;
      text-align: center;
      font-size: 0.225rem;
      color: rgba(255, 255, 255, 0.7);
      padding-top: 0.125rem;
    }
  }
}
.map {
    
    
  position: relative;
  height: 10.125rem;
  .chart {
    
    
    position: absolute;
    top: 0;
    left: 0;
    z-index: 5;
    height: 10.125rem;
    width: 100%;
  }
  .map1,
  .map2,
  .map3 {
    
    
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 6.475rem;
    height: 6.475rem;
    background: url(../images/map.png) no-repeat;
    background-size: 100% 100%;
    opacity: 0.3;
  }
  .map2 {
    
    
    width: 8.0375rem;
    height: 8.0375rem;
    background-image: url(../images/lbx.png);
    opacity: 0.6;
    animation: rotate 15s linear infinite;
    z-index: 2;
  }
  .map3 {
    
    
    width: 7.075rem;
    height: 7.075rem;
    background-image: url(../images/jt.png);
    animation: rotate1 10s linear infinite;
  }

  @keyframes rotate {
    
    
    from {
    
    
      transform: translate(-50%, -50%) rotate(0deg);
    }
    to {
    
    
      transform: translate(-50%, -50%) rotate(360deg);
    }
  }
  @keyframes rotate1 {
    
    
    from {
    
    
      transform: translate(-50%, -50%) rotate(0deg);
    }
    to {
    
    
      transform: translate(-50%, -50%) rotate(-360deg);
    }
  }
}

09-Echarts-Введение

Общие библиотеки визуализации данных:

  • D3.js в настоящее время является самой высоко оцененной библиотекой инструментов визуализации Javascript в Интернете (сложно начать работу).
  • ECharts.js Библиотека визуализации данных Javascript с открытым исходным кодом, созданная Baidu.
  • Highcharts.js Зарубежная библиотека визуализации данных, некоммерческая и бесплатная, используется многими крупными зарубежными компаниями.
  • Новое поколение решений для визуализации данных от AntV Ant Financial и т. д.
  • Highcharts и Echarts похожи на отношения между Office и WPS.

ECharts, библиотека визуализации с открытым исходным кодом, реализованная с использованием JavaScript, может без проблем работать на ПК и мобильных устройствах, совместима с большинством современных браузеров (IE8/9/10/11, Chrome, Firefox, Safari и т. д.) и опирается на векторную графику в Внизу Библиотека ZRender предоставляет интуитивно понятные, интерактивные и настраиваемые диаграммы визуализации данных.

Народный:

Адрес официального сайта: https://www.echartsjs.com/zh/index.html

10-Echarts-Опыт

Официальное руководство: [Начните работу с ECharts за пять минут](https://www.echartsjs.com/zh/tutorial.html#Начните работу с ECharts за пять минут)

  • Скачать схемы https://github.com/apache/incubator-echarts/tree/4.5.0

Шаги для использования:

  1. Вставьте файл плагина echarts в html-страницу.
  2. Подготовьте контейнер DOM с размером
<div id="main" style="width: 600px;height:400px;"></div>
  1. Инициализировать объект экземпляра echarts
var myChart = echarts.init(document.getElementById('main'));
  1. Укажите элементы конфигурации и данные (опция)
var option = {
    
    
    xAxis: {
    
    
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
    
    
        type: 'value'
    },
    series: [{
    
    
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};
  1. Установите элемент конфигурации в объект экземпляра echarts
myChart.setOption(option);

11-Echarts-базовая конфигурация

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

Основная конфигурация, с которой нужно разобраться:series xAxis yAxis grid tooltip title legend color

  • ряд

    • список серий. Каждая серия typeопределяет
    • Vernacular: данные значка, укажите тип значка, несколько диаграмм могут перекрываться.
  • xAxis: ось x в сетке прямоугольной системы координат.

    • borderGap: Стратегия гашения по обеим сторонам оси координат верна. В настоящее время шкала используется только как разделительная линия, а метки и точки данных будут находиться в середине полосы между двумя шкалами.
  • yAxis: ось Y в сетке прямоугольной системы координат.

  • grid: Сетка чертежа в декартовой системе координат.

  • заголовок: компонент заголовка

  • всплывающая подсказка: компонент окна подсказки

  • легенда: компонент легенды

  • цвет: список цветов палитры

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

option = {
    
    
    // color设置我们线条的颜色 注意后面是个数组
    color: ['pink', 'red', 'green', 'skyblue'],
    // 设置图表的标题
    title: {
    
    
        text: '折线图堆叠123'
    },
    // 图表的提示框组件 
    tooltip: {
    
    
        // 触发方式
        trigger: 'axis'
    },
    // 图例组件
    legend: {
    
    
       // series里面有了 name值则 legend里面的data可以删掉
    },
    // 网格配置  grid可以控制线形图 柱状图 图表大小
    grid: {
    
    
        left: '3%',
        right: '4%',
        bottom: '3%',
        // 是否显示刻度标签 如果是true 就显示 否则反之
        containLabel: true
    },
    // 工具箱组件  可以另存为图片等功能
    toolbox: {
    
    
        feature: {
    
    
            saveAsImage: {
    
    }
        }
    },
    // 设置x轴的相关配置
    xAxis: {
    
    
        type: 'category',
        // 是否让我们的线条和坐标轴有缝隙
        boundaryGap: false,
        data: ['星期一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
     // 设置y轴的相关配置
    yAxis: {
    
    
        type: 'value'
    },
    // 系列图表配置 它决定着显示那种类型的图表
    series: [
        {
    
    
            name: '邮件营销',
            type: 'line',
           
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
    
    
            name: '联盟广告',
            type: 'line',

            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
    
    
            name: '视频广告',
            type: 'line',
          
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
    
    
            name: '直接访问',
            type: 'line',
          
            data: [320, 332, 301, 334, 390, 330, 320]
        }
    ]
};

12- Диаграмма гистограммы (два шага)

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями
  1. Введен в html-страницу
// 柱状图1模块
(function() {
    
    
  // 实例化对象
  let myChart = echarts.init(document.querySelector(".bar .chart"));
  // 指定配置和数据
  let option = {
    
    
    color: ["#3398DB"],
    tooltip: {
    
    
      trigger: "axis",
      axisPointer: {
    
    
        // 坐标轴指示器,坐标轴触发有效
        type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
      }
    },
    grid: {
    
    
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true
    },
    xAxis: [
      {
    
    
        type: "category",
        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
        axisTick: {
    
    
          alignWithLabel: true
        }
      }
    ],
    yAxis: [
      {
    
    
        type: "value"
      }
    ],
    series: [
      {
    
    
        name: "直接访问",
        type: "bar",
        barWidth: "60%",
        data: [10, 52, 200, 334, 390, 330, 220]
      }
    ]
  };

  // 把配置给实例对象
  myChart.setOption(option);
})();
  1. Индивидуальные в соответствии с потребностями

    • Измените цвет столбца диаграммы #2f89cf

    • Измените размер диаграммы вверху на 10 пикселей, внизу на сетке 4%, чтобы определить размер нашей гистограммы.

    color: ["#2f89cf"],
    grid: {
      left: "0%",
      top: "10px",
      right: "0%",
      bottom: "4%",
      containLabel: true
    },
    
    • Настройки, связанные с осью X xAxis
      • Цвет текста установлен на rgba (255 255 255,.6), а размер шрифта — 12 пикселей.
      • Стиль оси X не отображается
    // 设置x轴标签文字样式
    

// Цвет текста и размер по оси X
axisLabel: { color: "rgba(255,255,255,.6)", fontSize: "12" }, // Стиль по оси X не отображает axisLine: { show: false // Если вы хотите установить отдельные стили линий // lineStyle: { // цвет: "rgba(255,255,255,.1)", // ширина: 1, // тип: "solid" } }













- Y 轴相关定制
  - 文本颜色设置为   rgba(255,255,255,.6)   字体大小为 12px
  - Y 轴线条样式 更改为  1像素的  rgba(255,255,255,.1) 边框
  - 分隔线的颜色修饰为  1像素的  rgba(255,255,255,.1)   

~~~JavaScript
// y 轴文字标签样式
axisLabel: {
      color: "rgba(255,255,255,.6)",
       fontSize: "12"
},
 // y轴线条样式
 axisLine: {
      lineStyle: {
         color: "rgba(255,255,255,.1)",
         // width: 1,
         // type: "solid"
      }
5232},
 // y 轴分隔线样式
splitLine: {
    lineStyle: {
       color: "rgba(255,255,255,.1)"
     }
}
  • Измените форму столбца, чтобы она была закруглена и установлена ​​в серии ширины столбца.
series: [
      {
        name: "直接访问",
        type: "bar",
        // 修改柱子宽度
        barWidth: "35%",
        data: [10, 52, 200, 334, 390, 330, 220],
        itemStyle: {
          // 修改柱子圆角
          barBorderRadius: 5
        }
      }
    ]
  };
  • Заменить соответствующие данные
// x轴中更换data数据
 data: [ "旅游行业","教育培训", "游戏行业", "医疗行业", "电商行业", "社交行业", "金融行业" ],
// series 更换数据
 data: [200, 300, 300, 900, 1500, 1200, 600]
  • Адаптируйте диаграмму к экрану
  window.addEventListener("resize", function() {
    
    
    myChart.resize();
  });

13-Настройка гистограммы 2

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями

Требование 1. Измените сетку размера графики.

  // 图标位置
    grid: {
    
    
      top: "10%",
      left: "22%",
      bottom: "10%"
    },

Требование 2: не отображать ось x

   xAxis: {
    
    
      show: false
    },

Требование 3: настройка, связанная с осью Y

  • Не отображать ось Y и связанные с ней галочки
//不显示y轴线条
axisLine: {
    
    
    show: false
        },
// 不显示刻度
axisTick: {
    
    
   show: false
},
  • Цвет текста по оси Y установлен на белый.
   axisLabel: {
    
    
          color: "#fff"
   },

Требование 4. Измените первую группу стилей, связанных со столбцами (полосы).

name: "条",
// 柱子之间的距离
barCategoryGap: 50,
//柱子的宽度
barWidth: 10,
// 柱子设为圆角
itemStyle: {
    
    
    normal: {
    
    
      barBorderRadius: 20,       
    }
},
  • Установите процентное отображение данных в первой группе столбцов
// 图形上的文本标签
label: {
    
    
    normal: {
    
    
         show: true,
         // 图形内显示
         position: "inside",
         // 文字的显示格式
         formatter: "{c}%"
     }
},
  • Установите для первой группы столбцов разные цвета
// 声明颜色数组
var myColor = ["#1089E7", "#F57474", "#56D0E3", "#F8B448", "#8B78F6"];
// 2. 给 itemStyle  里面的color 属性设置一个 返回值函数
  itemStyle: {
    
    
          normal: {
    
    
            barBorderRadius: 20,  
            // params 传进来的是柱子对象
            console.log(params);
            // dataIndex 是当前柱子的索引号
            return myColor[params.dataIndex];
          }
         
},

Требование 5. Измените соответствующую конфигурацию второй группы столбцов (форма кадра).

  	    name: "框",
        type: "bar",
        barCategoryGap: 50,
        barWidth: 15,
        itemStyle: {
    
    
            color: "none",
            borderColor: "#00c1de",
            borderWidth: 3,
            barBorderRadius: 15
        },
        data: [19325, 23438, 31000, 121594, 134141, 681807]
      }

Требование 6. Добавьте второй набор данных на ось Y.

yAxis: [
      {
    
    
      type: "category",
      data: ["印尼", "美国", "印度", "中国", "世界人口(万)"],
      // 不显示y轴的线
      axisLine: {
    
    
        show: false
      },
      // 不显示刻度
      axisTick: {
    
    
        show: false
      },
      // 把刻度标签里面的文字颜色设置为白色
      axisLabel: {
    
    
        color: "#fff"
      }
    },
      {
    
    
        show: true,
        data: [702, 350, 610, 793, 664],
           // 不显示y轴的线
      axisLine: {
    
    
        show: false
      },
      // 不显示刻度
      axisTick: {
    
    
        show: false
      },
        axisLabel: {
    
    
          textStyle: {
    
    
            fontSize: 12,
            color: "#fff"
          }
        }
      }
    ],

Требование 7. Настройте два набора стеков столбцов и замените данные

// 给series  第一个对象里面的 添加 
yAxisIndex: 0,
// 给series  第二个对象里面的 添加 
yAxisIndex: 1,
// series 第一个对象里面的data
data: [70, 34, 60, 78, 69],
// series 第二个对象里面的data
data: [100, 100, 100, 100, 100],
// y轴更换第一个对象更换data数据
data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],
// y轴更换第二个对象更换data数据
data:[702, 350, 610, 793, 664],

Полный код:

// 柱状图2
(function() {
    
    
  var myColor = ["#1089E7", "#F57474", "#56D0E3", "#F8B448", "#8B78F6"];
  // 1. 实例化对象
  var myChart = echarts.init(document.querySelector(".bar2 .chart"));
  // 2. 指定配置和数据
  var option = {
    
    
    grid: {
    
    
      top: "10%",
      left: "22%",
      bottom: "10%"
      // containLabel: true
    },
    // 不显示x轴的相关信息
    xAxis: {
    
    
      show: false
    },
    yAxis: [
      {
    
    
        type: "category",
        inverse: true,
        data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],
        // 不显示y轴的线
        axisLine: {
    
    
          show: false
        },
        // 不显示刻度
        axisTick: {
    
    
          show: false
        },
        // 把刻度标签里面的文字颜色设置为白色
        axisLabel: {
    
    
          color: "#fff"
        }
      },
      {
    
    
        data: [702, 350, 610, 793, 664],
        inverse: true,
        // 不显示y轴的线
        axisLine: {
    
    
          show: false
        },
        // 不显示刻度
        axisTick: {
    
    
          show: false
        },
        // 把刻度标签里面的文字颜色设置为白色
        axisLabel: {
    
    
          color: "#fff"
        }
      }
    ],
    series: [
      {
    
    
        name: "条",
        type: "bar",
        data: [70, 34, 60, 78, 69],
        yAxisIndex: 0,
        // 修改第一组柱子的圆角
        itemStyle: {
    
    
          barBorderRadius: 20,
          // 此时的color 可以修改柱子的颜色
          color: function(params) {
    
    
            // params 传进来的是柱子对象
            console.log(params);
            // dataIndex 是当前柱子的索引号
            return myColor[params.dataIndex];
          }
        },
        // 柱子之间的距离
        barCategoryGap: 50,
        //柱子的宽度
        barWidth: 10,
        // 显示柱子内的文字
        label: {
    
    
          show: true,
          position: "inside",
          // {c} 会自动的解析为 数据  data里面的数据
          formatter: "{c}%"
        }
      },
      {
    
    
        name: "框",
        type: "bar",
        barCategoryGap: 50,
        barWidth: 15,
        yAxisIndex: 1,
        data: [100, 100, 100, 100, 100],
        itemStyle: {
    
    
          color: "none",
          borderColor: "#00c1de",
          borderWidth: 3,
          barBorderRadius: 15
        }
      }
    ]
  };

  // 3. 把配置给实例对象
  myChart.setOption(option);
})();

14- Линейная диаграмма 1 Создание модуля кадровых изменений

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями

Требование 1. Измените размер линейного графика, установите цвет границы отображения: #012f4a и отобразите метку масштаба.

    // 设置网格样式
    grid: {
    
     
      top: '20%',
      left: '3%',
      right: '4%',
      bottom: '3%',
      show: true,// 显示边框
      borderColor: '#012f4a',// 边框颜色
      containLabel: true // 包含刻度文字在内
    },

Требование 2. Измените цвет текста #4c9bfd в компоненте легенды, а расстояние справа налево равно 10%.

 // 图例组件
    legend: {
    
    
      textStyle: {
    
    
        color: '#4c9bfd' // 图例文字颜色
      },
      right: '10%' // 距离右边10%
    },

Требование 3: конфигурация, связанная с осью X

  • Удаление накипи
  • Цвет шрифта метки шкалы оси X: #4c9bfd
  • Удалите цвет оси X (в будущем используйте разделительную линию оси Y)
  • Два конца оси не нуждаются во внутреннем интервале borderGap.
    xAxis: {
    
    
      type: 'category',
      data: ["周一", "周二"],
	  axisTick: {
    
    
         show: false // 去除刻度线
       },
       axisLabel: {
    
    
         color: '#4c9bfd' // 文本颜色
       },
       axisLine: {
    
    
         show: false // 去除轴线
       },
       boundaryGap: false  // 去除轴内间距
    },

Требование 4. Настройка оси Y

  • Удаление накипи
  • Цвет шрифта: #4c9bfd
  • Цвет разделителя: #012f4a
    yAxis: {
    
    
      type: 'value',
      axisTick: {
    
    
        show: false  // 去除刻度
      },
      axisLabel: {
    
    
        color: '#4c9bfd' // 文字颜色
      },
      splitLine: {
    
    
        lineStyle: {
    
    
          color: '#012f4a' // 分割线颜色
        }
      }
    },

Требование 5. Настройка двухлинейных графиков

  • Цвета соответственно: #00f2f1 #ed3f35
  • Измените полилинию как сглаженную и добавьте гладкость к истине в данных серии
    color: ['#00f2f1', '#ed3f35'],
	series: [{
    
    
      name:'新增粉丝',
      data: [820, 932, 901, 934, 1290, 1330, 1320],
      type: 'line',
      // 折线修饰为圆滑
      smooth: true,
      },{
    
    
      name:'新增游客',
      data: [100, 331, 200, 123, 233, 543, 400],
      type: 'line',
      smooth: true,
    }]

Требование 6. Данные конфигурации

// x轴的文字
xAxis: {
    
    
  type: 'category',
  data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
// 图标数据
    series: [{
    
    
      name:'新增粉丝',
      data:  [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
      type: 'line',
      smooth: true
    },{
    
    
      name:'新增游客',
      data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79],     
      type: 'line',
      smooth: true
      }
    }]

Требование 7: Новые требования нажмите на изменения данных в 2020 и 2021 годах

Ниже приведены данные, отправленные из фона (запрошенные ajax)

 var yearData = [
      {
    
    
        year: '2020',  // 年份
        data: [  // 两个数组是因为有两条线
             [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
             [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
          ]
      },
      {
    
    
        year: '2021',  // 年份
        data: [  // 两个数组是因为有两条线
             [123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],
     		[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]
          ]
      }
     ];
  • событие переключения панели вкладок
  • Нажмите кнопку 2020, чтобы заменить данные в первом объекте серии данными [0] в объекте 2020.
  • Нажмите кнопку 2020, чтобы заменить данные во втором объекте ряда данными в объекте 2020[1].
  • То же самое касается кнопки 2021 года.

Полный код:

// 折线图1模块制作
(function() {
    
    
  var yearData = [
    {
    
    
      year: "2020", // 年份
      data: [
        // 两个数组是因为有两条线
        [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
        [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
      ]
    },
    {
    
    
      year: "2021", // 年份
      data: [
        // 两个数组是因为有两条线
        [123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],
        [143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]
      ]
    }
  ];
  // 1. 实例化对象
  var myChart = echarts.init(document.querySelector(".line .chart"));
  // 2.指定配置
  var option = {
    
    
    // 通过这个color修改两条线的颜色
    color: ["#00f2f1", "#ed3f35"],
    tooltip: {
    
    
      trigger: "axis"
    },
    legend: {
    
    
      // 如果series 对象有name 值,则 legend可以不用写data
      // 修改图例组件 文字颜色
      textStyle: {
    
    
        color: "#4c9bfd"
      },
      // 这个10% 必须加引号
      right: "10%"
    },
    grid: {
    
    
      top: "20%",
      left: "3%",
      right: "4%",
      bottom: "3%",
      show: true, // 显示边框
      borderColor: "#012f4a", // 边框颜色
      containLabel: true // 包含刻度文字在内
    },

    xAxis: {
    
    
      type: "category",
      boundaryGap: false,
      data: [
        "1月",
        "2月",
        "3月",
        "4月",
        "5月",
        "6月",
        "7月",
        "8月",
        "9月",
        "10月",
        "11月",
        "12月"
      ],
      axisTick: {
    
    
        show: false // 去除刻度线
      },
      axisLabel: {
    
    
        color: "#4c9bfd" // 文本颜色
      },
      axisLine: {
    
    
        show: false // 去除轴线
      }
    },
    yAxis: {
    
    
      type: "value",
      axisTick: {
    
    
        show: false // 去除刻度线
      },
      axisLabel: {
    
    
        color: "#4c9bfd" // 文本颜色
      },
      axisLine: {
    
    
        show: false // 去除轴线
      },
      splitLine: {
    
    
        lineStyle: {
    
    
          color: "#012f4a" // 分割线颜色
        }
      }
    },
    series: [
      {
    
    
        name: "新增粉丝",
        type: "line",
        // true 可以让我们的折线显示带有弧度
        smooth: true,
        data: yearData[0].data[0]
      },
      {
    
    
        name: "新增游客",
        type: "line",
        smooth: true,
        data: yearData[0].data[1]
      }
    ]
  };

  // 3. 把配置给实例对象
  myChart.setOption(option);
  // 4. 让图表跟随屏幕自动的去适应
  window.addEventListener("resize", function() {
    
    
    myChart.resize();
  });

  // 5.点击切换效果
  $(".line h2").on("click", "a", function() {
    
    
    // alert(1);
    // console.log($(this).index());
    // 点击 a 之后 根据当前a的索引号 找到对应的 yearData的相关对象
    // console.log(yearData[$(this).index()]);
    var obj = yearData[$(this).index()];
    option.series[0].data = obj.data[0];
    option.series[1].data = obj.data[1];
    // 需要重新渲染
    myChart.setOption(option);
  });
})();

15- Линейная диаграмма 2 Производство модуля объема воспроизведения

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями

Требование 1: Измените цвет текста компонента легенды rgba(255,255,255,.5) и размер текста 12

 legend: {
    
    
      top: "0%",
      textStyle: {
    
    
        color: "rgba(255,255,255,.5)",
        fontSize: "12"
      }
},

Требование 2. Измените размер диаграммы

grid: {
    
    
      left: "10",
      top: "30",
      right: "10",
      bottom: "10",
      containLabel: true
    },

Требование 3. Измените конфигурацию, связанную с осью X.

  • Измените цвет текста на rgba(255,255,255,.6) и размер текста на 12
  • Цвет оси x — rgba (255 255 255,.2).
     // 文本颜色为rgba(255,255,255,.6)  文字大小为 12
     axisLabel: {
    
    
          textStyle: {
    
    
            color: "rgba(255,255,255,.6)",
            fontSize: 12
          }
        },
         // x轴线的颜色为   rgba(255,255,255,.2)
        axisLine: {
    
    
          lineStyle: {
    
    
            color: "rgba(255,255,255,.2)"
          }
        },

Требование 4. Измените соответствующую конфигурацию оси Y.

        axisTick: {
    
     show: false },
        axisLine: {
    
    
          lineStyle: {
    
    
            color: "rgba(255,255,255,.1)"
          }
        },
        axisLabel: {
    
    
          textStyle: {
    
    
            color: "rgba(255,255,255,.6)",
            fontSize: 12
          }
        },
	   // 修改分割线的颜色
        splitLine: {
    
    
          lineStyle: {
    
    
            color: "rgba(255,255,255,.1)"
          }
        }
      

Требование 5: Измените конфигурацию двух линейных модулей (обратите внимание, что в серии она индивидуальна).

       //第一条 线是圆滑
       smooth: true,
        // 单独修改线的样式
        lineStyle: {
    
    
            color: "#0184d5",
            width: 2 
        },
         // 填充区域
        areaStyle: {
    
    
              // 渐变色,只需要复制即可
            color: new echarts.graphic.LinearGradient(
              0,
              0,
              0,
              1,
              [
                {
    
    
                  offset: 0,
                  color: "rgba(1, 132, 213, 0.4)"   // 渐变色的起始颜色
                },
                {
    
    
                  offset: 0.8,
                  color: "rgba(1, 132, 213, 0.1)"   // 渐变线的结束颜色
                }
              ],
              false
            ),
            shadowColor: "rgba(0, 0, 0, 0.1)"
        },
        // 设置拐点 小圆点
        symbol: "circle",
        // 拐点大小
        symbolSize: 8,
        // 设置拐点颜色以及边框
       itemStyle: {
    
    
            color: "#0184d5",
            borderColor: "rgba(221, 220, 107, .1)",
            borderWidth: 12
        },
        // 开始不显示拐点, 鼠标经过显示
        showSymbol: false,
       name: "转发量",
        type: "line",
        smooth: true,
        lineStyle: {
    
    
          normal: {
    
    
            color: "#00d887",
            width: 2
          }
         },
         areaStyle: {
    
    
          normal: {
    
    
            color: new echarts.graphic.LinearGradient(
              0,
              0,
              0,
              1,
              [
                {
    
    
                  offset: 0,
                  color: "rgba(0, 216, 135, 0.4)"
                },
                {
    
    
                  offset: 0.8,
                  color: "rgba(0, 216, 135, 0.1)"
                }
              ],
              false
            ),
            shadowColor: "rgba(0, 0, 0, 0.1)"
          }
        },
        // 设置拐点 小圆点
        symbol: "circle",
        // 拐点大小
        symbolSize: 5,
        // 设置拐点颜色以及边框
         itemStyle: {
    
    
            color: "#00d887",
            borderColor: "rgba(221, 220, 107, .1)",
            borderWidth: 12
        },
        // 开始不显示拐点, 鼠标经过显示
        showSymbol: false,

Требование 6: заменить данные

// x轴更换数据
data: [ "01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","26","28","29","30"],
// series  第一个对象data数据
 data: [ 30, 40, 30, 40,30, 40, 30,60,20, 40, 30, 40, 30, 40,30, 40, 30,60,20, 40, 30, 40, 30, 40,30, 40, 20,60,50, 40],
// series  第二个对象data数据
 data: [ 130, 10, 20, 40,30, 40, 80,60,20, 40, 90, 40,20, 140,30, 40, 130,20,20, 40, 80, 70, 30, 40,30, 120, 20,99,50, 20],

16-круговая диаграмма 1 Производство модуля распределения возраста

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями

Требование к пользовательской диаграмме 1:

  • Измените компонент легенды, чтобы он отображался внизу и по центру.
  • Ширина и высота каждого маленького значка изменены на 10 пикселей.
  • размер текста 12 цветов RGBA(255,255,255,.5)
 legend: {
    
    
      // 距离底部为0%
      bottom: "0%",
      // 小图标的宽度和高度
      itemWidth: 10,
      itemHeight: 10,
      data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'],
      // 修改图例组件的文字为 12px
      textStyle: {
    
    
        color: "rgba(255,255,255,.5)",
        fontSize: "12"
      }
 },

Требование к настройке 2:

  • Изменить центр по горизонтали и центр по вертикали
  • Измените радиус внутреннего круга и радиус внешнего круга на ["40%", "60%"] Розовое дружеское напоминание учителю, с декартовой системой координат, такой как столбчатая диаграмма, представляет собой сетку для изменения графики. размер, а наша круговая диаграмма - через изменение размера радиуса
series: [
      {
    
    
        name: "年龄分布",
        type: "pie",
        // 设置饼形图在容器中的位置
        center: ["50%", "50%"],
        //  修改内圆半径和外圆半径为  百分比是相对于容器宽度来说的
        radius: ["40%", "60%"],
        // 不显示标签文字
        label: {
    
     show: false },
        // 不显示连接线
        labelLine: {
    
     show: false },
      }
    ]

Требование настройки 3: заменить данные

// legend 中的data  可省略
data: ["0岁以下", "20-29岁", "30-39岁", "40-49岁", "50岁以上"],
//  series 中的数据
 data: [
          {
    
     value: 1, name: "0岁以下" },
          {
    
     value: 4, name: "20-29岁" },
          {
    
     value: 2, name: "30-39岁" },
          {
    
     value: 2, name: "40-49岁" },
          {
    
     value: 1, name: "50岁以上" }
 ] ,

Требование к настройке 4: изменить цвет

color: [
          "#065aab",
          "#066eab",
          "#0682ab",
          "#0696ab",
          "#06a0ab",
        ],
 // 4. 让图表跟随屏幕自动的去适应
  window.addEventListener("resize", function() {
    
    
    myChart.resize();
  });

17-Круговая диаграмма 2. Производство региональных распределительных модулей (диаграмма «Соловьиная роза»)

  • Найдите похожие примеры на официальном сайте, проанализируйте их должным образом и внесите в HTML-страницы.
  • Настройте диаграмму в соответствии с вашими потребностями

Шаг 2: Настройте по мере необходимости

  • Требование 1. Настройки цвета
color: ['#006cff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff', '#9fe6b8', '#32c5e9', '#1d9dff'],
  • Требование 2. Измените размер круговой диаграммы (объект серии)
radius: ['10%', '70%'],
  • Требование 3. Измените режим отображения круговой диаграммы на режим радиуса.
 roseType: "radius",
  • Требование 4: Замена использования данных (объект данных в серийном объекте)
          {
    
     value: 20, name: '云南' },
          {
    
     value: 26, name: '北京' },
          {
    
     value: 24, name: '山东' },
          {
    
     value: 25, name: '河北' },
          {
    
     value: 20, name: '江苏' },
          {
    
     value: 25, name: '浙江' },
          {
    
     value: 30, name: '四川' },
          {
    
     value: 42, name: '湖北' }
  • Требование 5: Шрифт немного меньше на 10 пикселей (задается в объекте серии)

    Текстовая метка на круговой диаграмме может управлять некоторыми стилями текста круговой диаграммы. настройки объекта этикетки

series: [
      {
    
    
        name: "面积模式",
        type: "pie",
        radius: [30, 110],
        center: ["50%", "50%"],
        roseType: "radius",
        // 文本标签控制饼形图文字的相关样式, 注意它是一个对象
        label: {
    
    
          fontSize: 10
        },
      }
    ]
  };
  • Требование 6. Не допускайте слишком длинной направляющей линии при масштабировании. Направляющая линия немного короче (задается объектом labelLine в объекте серии)
    • Схема подключения 6 пикс.
    • текст ссылки 8 пикселей
+        // 文字调整
+        label:{
+          fontSize: 10
+        },
+        // 引导线调整
+        labelLine: {
+          // 连接扇形图线长
+          length: 6,
+          // 连接文字线长
+          length2: 8
+        } 
+      }
+    ],

  • Требование 6: При увеличении масштаба в браузере диаграмма автоматически адаптируется.
// 监听浏览器缩放,图表对象调用缩放resize函数
window.addEventListener("resize", function() {
    
    
    myChart.resize();
  });

18-Echarts-Введение сообщества

Сообщество — это место, где активные пользователи echart общаются и вносят индивидуальные диаграммы.

[Не удалось передать изображение по внешней ссылке, исходный сайт может иметь механизм защиты от кражи, рекомендуется сохранить изображение и загрузить его напрямую (img-oThqj6mk-1639030724855)(docs/media/1576664444951.png)]

  • Здесь вы можете найти несколько настраиваемых диаграмм на основе echart, которые эквивалентны плагинам, разработанным на основе jquery.Здесь представлены сторонние диаграммы, разработанные на основе echarts.

19-Echarts-использование карты (расширение)

Обратитесь к примеру сообщества: https://gallery.echartsjs.com/editor.html?c=x0-ExSkZDM (симулированный маршрут самолета)

Этапы реализации:

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

Необходимо изменить:

  • Удалить компонент заголовка
  • удалить цвет фона
  • Измените фон карты провинции #142957 areaColor, чтобы внести изменения.
  • Карту можно увеличить, установив масштаб на 1,2.
    geo: {
    
    
      map: 'china',
      zoom: 1.2,
      label: {
    
    
        emphasis: {
    
    
          show: false
        }
      },
      roam: false,
      itemStyle: {
    
    
        normal: {
    
    
          areaColor: '#142957',
          borderColor: '#0692a4'
        },
        emphasis: {
    
    
          areaColor: '#0b1c2d'
        }
      }
    },

Резюме: этот пример является расширенным случаем. Вы можете прочитать больше случаев в сообществе в будущем.

20- Окончательное масштабирование ограничений

/* 约束屏幕尺寸 */
@media screen and (max-width: 1024px) {
    
    
  html {
    
    
    font-size: 42px !important;
  }
}
@media screen and (min-width: 1920px) {
    
    
  html {
    
    
    font-size: 80px !important;
  }
}

Guess you like

Origin blog.csdn.net/qq_58432443/article/details/121820463