漏刻有时数据可视化Echarts组件开发(27):端午地图粽情之你的家乡吃甜还是吃咸?

news2024/12/26 23:37:39

端午地图粽情之你的家乡吃甜还是吃咸?

  • 前言
  • Echarts创意来源
  • Echarts核心代码
    • 1.引入外部文件
    • 2.构建HTML容器
    • 3.Echarts组件开发
      • 预置各省数据
      • 初始化DOM
      • 配置选项
      • geo组件
      • series组件
      • 自适应浏览器
      • 完整option选项配置代码

在这里插入图片描述

前言

中国各地对粽子的口味偏好存在一定的差异,一般可以从以下几个方面来概括:

  1. 甜咸口味的区别1:北方地区一般偏向于咸口味,如北京、天津、山西等地的粽子多为五香肉、咸蛋黄等咸味,而南方地区则更加喜欢甜味,如浙江、江苏、上海等地的粽子多为红枣、豆沙、花生等甜味。

  2. 粽子材料的不同:由于地区气候和人们口味偏好的差异,在制作粽子时材料也存在差异。如北方的肉粽主要使用猪肉配以五香料等炖制,而南方的粽子则多使用糯米和糖果作为主要材料。

  3. 形状和包法:不同地区的粽子形状和包法也存在差异。如清明节吃的藕粽,浙江温州地区的粽子外形有些尖头,北京地区的豆沙粽盘型扁担,而苏州地区的粽子则包裹用大豆、红枣、桂花浸渍的糯米。

Echarts创意来源

在网上搜索端午素材,发现吃粽子的“甜咸之争”。素材应该是PSD设计出来的,那么用echarts能不能将其实现出来呢?

在这里插入图片描述

Echarts核心代码

1.引入外部文件

  • 基于echarts,version4.0.4开发,部分语法与最新的5.x有所差异;
    <script type="text/javascript" src="js/echarts.min.js"></script>
    <script type="text/javascript" src="js/china.js"></script>

使用echarts绘制中国地图时,有以下几点需要注意:

  1. 数据格式:需要使用echarts规定的中国地图数据格式,包括省份名称、省份代码、各省份坐标等信息。可以通过echarts官网提供的geoJSON格式地图数据来实现。

  2. 区域命名:在使用echarts绘制中国地图时,省份名称应该与echarts官方提供的数据保持一致。如果数据不一致,可能会出现地图无法渲染、或者渲染不准确等情况。

  3. 地图样式:在使用echarts绘制中国地图时,需要根据实际需要调整地图的样式,比如调整省份填充颜色、字体样式等。

  4. 数据展示:如果需要在地图上展示数据,需要使用对应的数据格式与echarts支持的数据可视化方式,比如使用series-map组件等。

  5. 其他注意事项:在使用echarts绘制中国地图时,还需要注意地图数据的更新、数据精度、图表性能、完整性等方面。此外,要注意在使用地图时遵守版权和法律法规要求。

2.构建HTML容器

<div id="container"></div>
*, body {
            font-size: 12px;
        }

        body {
            height: 100%;
            margin: 0;
            background: #cbecd7 url("images/mainbg.jpg") center top;
        }

        #container {
            height: 100%;
            margin-left: 20%;
        }

3.Echarts组件开发

预置各省数据

将各省的名称、粽子的类型作为常量,其中value设置为1、2、3便于使用visualMap视觉映射组件。

    var data = [
    {name: '北京', value: 1, type: '红枣粽'},
        {name: '天津', value: 1, type: '红枣粽'},
        {name: '辽宁', value: 1, type: '蜜枣粽'},
        {name: '新疆', value: 1, type: '大枣粽'},
        {name: '山西', value: 1, type: '红枣粽'},
        {name: '青海', value: 1, type: '大枣粽'},
        {name: '宁夏', value: 1, type: '蛋黄肉粽'},
        {name: '陕西', value: 1, type: '红枣粽'},
        {name: '黑龙江', value: 1, type: '蜜枣粽'},
        {name: '河北', value: 1, type: '小枣粽'},
        {name: '内蒙古', value: 1, type: '蜜枣葡萄干粽'},
        {name: '吉林', value: 1, type: '蜜枣粽'},
        {name: '安徽', value: 2, type: '腊肉粽'},
        {name: '河南', value: 2, type: '蜜枣豆沙粽 肉粽'},
        {name: '重庆', value: 2, type: '腊肉蛋黄粽'},
        {name: '湖南', value: 2, type: '肉粽'},
        {name: '湖北', value: 2, type: '肉粽'},
        {name: '江西', value: 2, type: '肉粽'},
        {name: '甘肃', value: 2, type: '红枣粽'},
        {name: '四川', value: 2, type: '腊肉蛋黄粽'},
        {name: '西藏', value: 2, type: '大枣粽 肉粽'},
        {name: '山东', value: 2, type: '蜜枣豆沙粽'},
        {name: '江苏', value: 2, type: '蜜枣豆沙粽 肉粽'},
        {name: '浙江', value: 2, type: '蜜枣豆沙粽 肉粽'},
        {name: '上海', value: 2, type: '蜜枣豆沙粽 肉粽'},
        {name: '广东', value: 2, type: '豆沙粽 肉粽'},
        {name: '台湾', value: 2, type: '烧肉粽'},
        {name: '香港', value: 2, type: ''},
        {name: '澳门', value: 2, type: ''},
        {name: '广西', value: 3, type: '芋头鲜肉粽'},
        {name: '云南', value: 3, type: '火腿粽'},
        {name: '福建', value: 3, type: '烧肉粽'},
        {name: '海南', value: 3, type: '黑猪肉粽'},
        {name: '贵州', value: 3, type: '板栗粽'}
    ]

初始化DOM

   var myChart = echarts.init(document.getElementById("container"));

配置选项

     title: {
            text: '粽子咸甜口味分布',
            top: '10%',
            x: 'center',
            textStyle: {
                fontSize: '32',
            },
        },
        legend: {},
        visualMap: {
            show: 1,
            type: "piecewise",
            orient: 'horizontal',
            top: '17%',
            x: 'center',
            bottom: '10%',
            pieces: [
                {lte: 1, label: '甜粽'},
                {gt: 1, lte: 2, label: '咸甜通吃'},
                {gte: 3, label: '咸粽'}
            ],
            textStyle: {
                color: "#000"
            },
            inRange: {
                symbolSize: 30,
                symbol: 'circle',
                color: ['#f8d998', '#fafc91', '#b7f9a2']
            }
        },

因为没有准确的调查数据,采用预置数据进行不同省份的颜色区分,即:

pieces: [
                {lte: 1, label: '甜粽'},
                {gt: 1, lte: 2, label: '咸甜通吃'},
                {gte: 3, label: '咸粽'}
            ],
inRange: {
                symbolSize: 30,
                symbol: 'circle',
                color: ['#f8d998', '#fafc91', '#b7f9a2']
            }

geo组件

如果在series:[]组件中不使用散点、引导线等数据图层时,可以不使用该组件。

  geo: {
            type: 'map',
            map: 'china',
            label: {
                show: false,
            },
            itemStyle: {
                areaColor: 'transparent',
                borderWidth: 2,
                borderColor: '#c1a46a', // 地图边配色
                //borderType: "dotted"
            },
            emphasis: {
                label: {
                    show: false,
                },
            },
            regions: [{ // 隐藏南海诸岛
                name: '南海诸岛',
                itemStyle: {
                    opacity: 0.6,
                    label: {
                        show: false,
                    }
                }
            }]
        },

series组件

     series: [
            {
                type: 'map',
                map: 'china',
                label: {
                    show: true,
                    formatter: function (params) {
                        console.log(params.data.type)
                        return params.data.type;
                    }
                },
                itemStyle: {
                    areaColor: '#f9dd9c',
                    borderWidth: 1,
                    borderColor: '#c1a46a', // 地图边配色
                    //borderType: "dotted"
                },
                emphasis: {
                    label: {
                        show: false,
                    },
                },
                z: 100,
                data: data,
                regions: [{ // 隐藏南海诸岛
                    name: '南海诸岛',
                    itemStyle: {
                        opacity: 0.6,
                        label: {
                            show: false,
                        }
                    }
                }]
            }]

通过label调用各个省份的粽子类型:

 label: {
                    show: true,
                    formatter: function (params) {
                        console.log(params.data.type)
                        return params.data.type;
                    }
                },

自适应浏览器

//自适应浏览器;
    myChart.setOption(option);
    window.addEventListener("resize", function () {
        myChart.resize();
    });

完整option选项配置代码

var option = {
        title: {
            text: '粽子咸甜口味分布',
            top: '10%',
            x: 'center',
            textStyle: {
                fontSize: '32',
            },
        },
        legend: {},
        visualMap: {
            show: 1,
            type: "piecewise",
            orient: 'horizontal',
            top: '17%',
            x: 'center',
            bottom: '10%',
            pieces: [
                {lte: 1, label: '甜粽'},
                {gt: 1, lte: 2, label: '咸甜通吃'},
                {gte: 3, label: '咸粽'}
            ],
            textStyle: {
                color: "#000"
            },
            inRange: {
                symbolSize: 30,
                symbol: 'circle',
                color: ['#f8d998', '#fafc91', '#b7f9a2']
            }
        },
        geo: {
            type: 'map',
            map: 'china',
            label: {
                show: false,
            },
            itemStyle: {
                areaColor: 'transparent',
                borderWidth: 2,
                borderColor: '#c1a46a', // 地图边配色
                //borderType: "dotted"
            },
            emphasis: {
                label: {
                    show: false,
                },
            },
            regions: [{ // 隐藏南海诸岛
                name: '南海诸岛',
                itemStyle: {
                    opacity: 0.6,
                    label: {
                        show: false,
                    }
                }
            }]
        },
        series: [
            {
                type: 'map',
                map: 'china',
                label: {
                    show: true,
                    formatter: function (params) {
                        console.log(params.data.type)
                        return params.data.type;
                    }
                },
                itemStyle: {
                    areaColor: '#f9dd9c',
                    borderWidth: 1,
                    borderColor: '#c1a46a', // 地图边配色
                    //borderType: "dotted"
                },
                emphasis: {
                    label: {
                        show: false,
                    },
                },
                z: 100,
                data: data,
                regions: [{ // 隐藏南海诸岛
                    name: '南海诸岛',
                    itemStyle: {
                        opacity: 0.6,
                        label: {
                            show: false,
                        }
                    }
                }]
            }]
    };

    //自适应浏览器;
    myChart.setOption(option);
    window.addEventListener("resize", function () {
        myChart.resize();
    });

中国地大物博,文化习俗不同,气候天气条件有异,导致大家喜爱的粽子的口味和吃法也有区别,但无论咸甜也好、南北之分也罢,希望大家放“粽”端午,吉祥安康!

创意参考:


  1. 端午节粽子口味地图出炉 “甜咸之争”你是哪一派? ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中的数据响应化

1、Vue的设计思想 MVVM框架的三要素&#xff1a;数据响应式、模板引擎及其渲染 数据响应式&#xff1a;监听数据变化并在视图中更新 Object.defineProperty()Proxy 模版引擎&#xff1a;提供描述视图的模版语法 插值&#xff1a;{{}}指令&#xff1a;v-bind&#xff0c;v-on…

chatgpt赋能python:Python构造器:理解类和对象的初始化方法

Python构造器&#xff1a;理解类和对象的初始化方法 Python是一门面向对象的编程语言&#xff0c;它的核心思想是数据和操作是紧密耦合的&#xff0c;而这些操作被封装到对象中。对象是一个具有属性和方法的实体&#xff0c;而类则是一种可以创建相同类型对象的蓝图。在Python…

chatgpt赋能python:Python有宏吗?

Python 有宏吗&#xff1f; 什么是宏&#xff1f; 在编程中&#xff0c;宏指的是一种代码编写方式&#xff0c;可以将一部分代码封装成可以被调用的函数或者语句&#xff0c;以便于在程序中重复使用。相对于普通的函数&#xff0c;宏更为灵活&#xff0c;可以达到更高的效率&…

RuntimeError: launcher ‘pdsh‘ not installed解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【吃透网络安全】2023软考网络管理员考点网络安全(三)计算机系统安全评估

涉及知识点 计算机系统安全评估准则&#xff0c;计算机系统安全评估历史&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 后面还有更多续篇希望大家能给个赞哈&#xff0c;这边提供个快捷入口&#xff01; 第一节…

二叉树题目:二叉树的后序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的后序遍历 出处&#xff1a;145. 二叉树的后序遍历 难度 3 级 题目…

沁恒CH32V103 边玩边学1-开发环境与GPIO项目

为什么选择这块板子&#xff1f; 它基于 RISC-V 架构&#xff0c;来看看 GPT 给出的介绍&#xff1a; RISC-V 是一种开源的指令集架构(ISA),与 x86 和 ARM 相似。它具有以下主要特点 • 简单 - RISC-V 采用精炼而简单的 RISC 指令设计,只有一些基本的常用指令。这使得 RISC-V…

CRM未来发展的6大方向

在数字化时代&#xff0c;几乎所有的企业都受到了数字化的洗礼&#xff0c;CRM作为企业数字化转型中的不可缺少的业务系统之一&#xff0c;也受到越来越企业的关注。 纵观CRM发展的趋势&#xff0c;当下CRM系统已经从早期的主要以记录&收集客户资料、管理销售的单点式管理延…

css基础知识四:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位&#xff0c;在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉&#xff0c;我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此&#xff0c;css中的像素只是一个抽象的单位&#xff0c;在不同…

深入浅出Node.js中的node_modules

文章目录 1. 什么是node_modulesnode_modules是什么npm包管理器和node_modules的关系 2. 如何安装和使用node_modulesnpm安装和使用node_modules的基本命令package.json文件的作用和结构npm包版本号的含义及如何管理包版本 3. 如何发布自己的npm包npm包的结构和规范如何将自己的…

端午出行电脑没网怎么办?无线网卡解决网络问题

无线网卡是一种可以让电脑或其他设备通过无线信号连接网络的硬件设备&#xff0c;无线网卡有多种类型和接口&#xff0c;例如USB无线网卡&#xff0c;PCI-E无线网卡&#xff0c;PCMCIA无线网卡等。端午出行在即&#xff0c;不妨看看驱动人生准备的无线网卡攻略&#xff0c;让大…

什么是kafka,如何学习kafka,整合SpringBoot

目录 一、什么是Kafka&#xff0c;如何学习 二、如何整合SpringBoot 三、Kafka的优势 一、什么是Kafka&#xff0c;如何学习 Kafka是一种分布式的消息队列系统&#xff0c;它可以用于处理大量实时数据流。学习Kafka需要掌握如何安装、配置和运行Kafka集群&#xff0c;以及如…

Kubernetes设计架构

一&#xff1a;Kubernetes是什么 Kubernetes是容器集群管理系统&#xff0c;是一个开源的平台&#xff0c;可以实现容器集群的自动化部署、自动扩缩容、维护等功能 通过Kubernetes可以&#xff1a; 快速部署应用 快速扩展应用 无缝对接新的应用功能 节省资源&#xff0c;优化硬…

chatgpt赋能python:Python桌面软件的优势和发展

Python桌面软件的优势和发展 作为一种高级编程语言&#xff0c;Python已经在广大的程序员中得到了越来越广泛的应用&#xff0c;同时也成为了一种非常适合开发桌面软件的语言。下面&#xff0c;我们将重点介绍Python桌面软件的优势和发展。 Python桌面软件的优势 Python编程…

ubuntu18修改源

1. 查看当前系统的源 系统的源 2. 将sources.list备份&#xff0c;sources-bak.list是备份文件 3. 选择要换的源 # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted un…

js 获取数组(对象)中的最大和最小值

let arr:array [] // 取最大值&#xff1a;Math.max.apply(Math, arr.map(function(o) {return o.value})) // 取最小值&#xff1a;Math.min.apply(Math, arr.map(function(o) {return o.value}))var array[ { “index_id”: 111, “area_id”: “18335623”, “name”: “满…

Jenkins持续集成构建平台使用指南

目 录 目 录... 2 1、系统参数... 3 2、授权策略... 5 3、构建管理... 6 3.1 构建命名规范... 6 3.1.1 任务视图命名... 6 3.1.2 任务命名... 6 3.2 参数化构建... 7 3.2.1 构建参数列表... 7 3.2.1 常用的参数配置... 8 3.3 分布式构建... 9 3.3.1 slave节点配置..…

基于spss的多元统计分析 之 聚类分析+判别分析(3/8)

实验目的&#xff1a; 1. 掌握多元数据的相关性、正态性、可视化表征的基本原理&#xff1b; 2&#xff0e;熟悉掌握SPSS软件/R软件的基本用法和基本操作&#xff1b; 3&#xff0e;利用实验指导中及软件中内置的实例数据&#xff0c;上机熟悉相关性检验正态性检验可视化数据方…

Kafka如何实现精确一次语义

精确一次交付保证是关于消息传递最具争议性的话题之一&#xff0c;因此也是最复杂的任务之一。然而&#xff0c;几年前&#xff0c;Kafka团队宣布他们实现了这一目标&#xff0c;让我们深入研究一下他们的实现方式以及存在的限制。 首先&#xff0c;值得定义一下这些交付语义是…

CMake在Linux服务器上进行编译与安装

CMake在Linux服务器上进行编译与安装 文章目录 CMake在Linux服务器上进行编译与安装[TOC](文章目录) 一、VScode 远程服务器连接1.服务器容器实例创建2.vscode 远程扩展部分下载&#xff08;SSH端&#xff09; 二、编译安装(时间较长&#xff09;1.克隆项目到本地仓库2.进入CMa…