【Echarts】玫瑰饼图数据交互

news2024/11/7 20:55:46

在学习echarts玫瑰饼图的过程中,了解到三种数据交互的方法,如果对您也有帮助,不胜欣喜。

一、官网教程

https://echarts.apache.org/examples/zh/editor.html?c=pie-roseType-simple

(该教程数据在代码中)

import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;

option = {
  legend: {
    top: 'bottom'
  },
  toolbox: {
    show: true,
    feature: {
      mark: { show: true },
      dataView: { show: true, readOnly: false },
      restore: { show: true },
      saveAsImage: { show: true }
    }
  },
  series: [
    {
      name: 'Nightingale Chart',
      type: 'pie',
      radius: [50, 250],
      center: ['50%', '50%'],
      roseType: 'area',
      itemStyle: {
        borderRadius: 8
      },
      data: [
        { value: 40, name: 'rose 1' },
        { value: 38, name: 'rose 2' },
        { value: 32, name: 'rose 3' },
        { value: 30, name: 'rose 4' },
        { value: 28, name: 'rose 5' },
        { value: 26, name: 'rose 6' },
        { value: 22, name: 'rose 7' },
        { value: 18, name: 'rose 8' }
      ]
    }
  ]
};

option && myChart.setOption(option);

二、网友分享教程

1、http://​https://www.dandelioncloud.cn/article/details/1580424652969463810​

2、https://blog.csdn.net/weixin_44763569/article/details/118681932

(该教程通过push将外部数值放入数组中使用)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 引入 echarts.js -->
		<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
		<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js" type="text/javascript"></script>
	</head>
	<body>
		<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
		<div id="main" style="width: 600px;height:600px;"></div>
		<script type="text/javascript">
			var names = []; //类别数组(用于存放饼图的类别)

			var brower = [];
			$.ajax({
				url: "test.json",
				data: {},
				type: 'GET',
				success: function(data) {
					//请求成功时执行该函数内容,result即为服务器返回的json对象
					$.each(data, function(index, item) {
						names.push(item.value); //挨个取出类别并填入类别数组
						brower.push({
							name: item.jobName,
							value: item.jobNum
						});
					});
					hrFun(brower);
				},
			});
			// 基于准备好的dom,初始化echarts实例
			var myChart = echarts.init(document.getElementById('main'));
			function hrFun(param) {
				myChart.setOption({
					legend: {
						top: 'bottom'
					},
					toolbox: {
						show: true,
						feature: {
							mark: {
								show: true
							},
							dataView: {
								show: true,
								readOnly: false
							},
							restore: {
								show: true
							},
							saveAsImage: {
								show: true
							}
						}
					},
					legend: {
						orient: 'vertical',
						x: 'right',
						y: 'bottom',
						textStyle: { //图例文字的样式
							color: '#0b2b5e',
							fontSize: 12
						},
						data: ['在线', '离线']
					},
					series: [{
						name: '面积模式',
						type: 'pie',
						radius: [50, 250],
						center: ['50%', '50%'],
						roseType: 'area',
						label: {
							normal: {
								show: false,
							},
						},
						labelLine: {
							normal: {
								show: false
							}
						},
						itemStyle: {
							borderRadius: 8
						},
						data: brower,
					}]
				});
			}
		</script>
	</body>
</html>
[{
    "jobNum": 1,
    "jobName": "设备经理"
}, {
    "jobNum": 1,
    "jobName": "电气操作"
}, {
    "jobNum": 0,
    "jobName": "ERP管理"
}, {
    "jobNum": 1,
    "jobName": "安全经理"
}, {
    "jobNum": 1,
    "jobName": "生产经理"
}, {
    "jobNum": 1,
    "jobName": "FKM车间主任"
}, {
    "jobNum": 5,
    "jobName": "操作工"
}, {
    "jobNum": 1,
    "jobName": "卸料员"
}, {
    "jobNum": 2,
    "jobName": "经理"
}, {
    "jobNum": 5,
    "jobName": "成品检测"
}, {
    "jobNum": 2,
    "jobName": "电气管理"
}, {
    "jobNum": 0,
    "jobName": "仓库"
}, {
    "jobNum": 5,
    "jobName": "主任"
}, {
    "jobNum": 1,
    "jobName": "设备副总"
}, {
    "jobNum": 0,
    "jobName": "默认身份"
}, {
    "jobNum": 2,
    "jobName": "设备管理"
}, {
    "jobNum": 1,
    "jobName": "统计"
}, {
    "jobNum": 1,
    "jobName": "组长"
}, {
    "jobNum": 3,
    "jobName": "仪表"
}, {
    "jobNum": 1,
    "jobName": "公用"
}, {
    "jobNum": 6,
    "jobName": "叉车"
}, {
    "jobNum": 1,
    "jobName": "行政管理"
}, {
    "jobNum": 2,
    "jobName": "普工"
}, {
    "jobNum": 1,
    "jobName": "班长"
}, {
    "jobNum": 2,
    "jobName": "人力资源"
}, {
    "jobNum": 1,
    "jobName": "销售"
}, {
    "jobNum": 1,
    "jobName": "聚合技术员"
}, {
    "jobNum": 1,
    "jobName": "工艺"
}, {
    "jobNum": 4,
    "jobName": "分析"
}, {
    "jobNum": 1,
    "jobName": "会计"
}, {
    "jobNum": 5,
    "jobName": "保洁"
}, {
    "jobNum": 1,
    "jobName": "技术副总"
}, {
    "jobNum": 2,
    "jobName": "安全管理员"
}, {
    "jobNum": 1,
    "jobName": "机修管理"
}, {
    "jobNum": 2,
    "jobName": "采购"
}, {
    "jobNum": 2,
    "jobName": "销售后台"
}, {
    "jobNum": 5,
    "jobName": "值班长"
}, {
    "jobNum": 12,
    "jobName": "后处理"
}, {
    "jobNum": 1,
    "jobName": "分析车间主任"
}, {
    "jobNum": 1,
    "jobName": "FEP车间主任"
}, {
    "jobNum": 2,
    "jobName": "工艺管理"
}, {
    "jobNum": 4,
    "jobName": "电工"
}, {
    "jobNum": 0,
    "jobName": "计量"
}, {
    "jobNum": 18,
    "jobName": "聚合"
}, {
    "jobNum": 1,
    "jobName": "仓库管理"
}, {
    "jobNum": 1,
    "jobName": "后勤管理"
}, {
    "jobNum": 1,
    "jobName": "总经理"
}, {
    "jobNum": 1,
    "jobName": "公用工程主任"
}, {
    "jobNum": 1,
    "jobName": "安全总监"
}, {
    "jobNum": 6,
    "jobName": "中控分析"
}, {
    "jobNum": 1,
    "jobName": "成品检测组长"
}, {
    "jobNum": 2,
    "jobName": "副主任"
}, {
    "jobNum": 1,
    "jobName": "单体技术员"
}, {
    "jobNum": 1,
    "jobName": "出纳"
}, {
    "jobNum": 1,
    "jobName": "技术员"
}, {
    "jobNum": 2,
    "jobName": "环保管理员"
}, {
    "jobNum": 2,
    "jobName": "机修"
}, {
    "jobNum": 2,
    "jobName": "生产副总"
}, {
    "jobNum": 6,
    "jobName": "外操"
}, {
    "jobNum": 1,
    "jobName": "总经理助理"
}, {
    "jobNum": 1,
    "jobName": "计量、ERP管理"
}]

三、课程视频教程

https://www.bilibili.com/video/BV14u411D7qK?p=50&vd_source=841fee104972680a6cac4dbdbf144b50

(通过设置echarts、axios接收数据)

主要涉及以下5个文件:

1、three.json,后台数据文件之一,注意value和name顺序!

{
    "chartData":[
        {"value":1000,"name":"A牌"},
        {"value":2000,"name":"B牌"},
        {"value":3000,"name":"C牌"},
        {"value":2500,"name":"D牌"},
        {"value":1500,"name":"E牌"}
    ]
}

2、three.js,后台配置文件之一

let express=require("express")
let router=express.Router()
let threeData=require("../mock/three.json")

router.get("/data",(req,res)=>{
    res.send({msg:"我是three的路由地址",chartData:threeData})
})

module.exports=router;

3、index.js,后台路由配置文件之一

let express=require("express")
let app=express();

//设置跨域
app.use(function(req,res,next){
    res.header('Access-Control-Allow-Origin','*');
    res.header('Access-Control-Allow-Headers','Content-Type,Content-Length, Authorization, Accept,X-Requested-with , yourHeaderFeild');
    res.header('Access-Control-Allow-Methods','PUT,POST,GET, DELETE,OPTIONS');
    
    next();
})
//引用路由文件
let chartOne=require("./router/one")
let chartTwo=require("./router/two")
let chartThree=require("./router/three")
let chartFour=require("./router/four")

//使用中间件来配置路由
app.use("/one",chartOne)
app.use("/two",chartTwo)
app.use("/three",chartThree)
app.use("/four",chartFour)

app.listen(8888)

4、homePage.vue,前端文件,引用组件

//以下只摘选script代码,其他略
<script>
//引用组件
import ItemPage from "@/components/itemPage.vue"

import ItemOne from "@/components/itemOne.vue"
import ItemTwo from "@/components/itemTwo.vue"
import ItemThree from "@/components/itemThree.vue"
import ItemFour from "@/components/itemFour.vue"
import MapPage from "@/components/mapPage.vue"
//引用inject
import {inject} from "vue"

export default{
    components:{
        ItemPage,ItemOne,ItemTwo,ItemThree,ItemFour,MapPage
    },
    setup(){
        //测试使用echarts
        let $echarts=inject("echarts")      
        //测试使用axios
        let $http=inject("axios")
        console.log($echarts)
        console.log($http)

    }
}
</script>

5、itemThree.vue,前端组件文件,获取后端数据

<template>
    <div>
        <h2>图表3</h2>
        <div class="chart" id="threeChart">
            分析图
        </div>
    </div>
</template>
<script>
import{inject,onMounted,reactive} from "vue"
export default {
    setup(){
    //1、设置echarts设置axios 创建接受请求的变量
        let $echarts=inject("echarts")
        let $http=inject("axios")
        
        //2、获取数据
        async function getState(){
            data=await $http({url:"/three/data"});
        }
        let data=reactive({})
        //生成动态图表
        //1、在dom加载完毕后动态展示图表
        onMounted(()=>{
            //2、发送请求
            getState().then(()=>{
                console.log("饼状图",data.data)
                //初始化echarts
                let myChart=$echarts.init(document.getElementById("threeChart"))
                myChart.setOption({
                    legend:{
                        //设置图例
                        top:"bottom"//放到最下面
                    },
                     series:[
                        {
                            type:"pie",//饼图
                            radius:[10,100],//内半径,外半径
                            center:["50%","45%"],//饼图中心坐标(横,纵)
                            roseType:"area",//设置成玫瑰图
                            itemStyle:{
                                borderRadius:10//内外圆角半径
                            },
                             data:data.data.chartData.chartData
                        
                        }
                     ]
                })
            })
        return{
                getState,data
        }        
        })      
    }
}
</script>
<style>
h2{
    /*48像素*/
    height: 0.6rem;
    color: #fff;
    line-height: 0.6rem;
    text-align: center;
    font-size: 0.25rem;
}
.chart{
    /*高度*/
    height: 4.5rem;
    background-color:rgba(191, 255, 0, 0.3);
}
</style>

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

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

相关文章

springboot-2.7.3+ES-7.10.0

跟着官网走&#xff0c;能干99。一年几次变&#xff0c;次次不一样。刚部署好ES-6.8&#xff0c;又买阿里云Es-7.10.0根本忙不完。 做为JDK1.8最后一个版本。今天就拿新技术部署一套。致辞&#xff1a;大家以后就用这套好了。别轻易触发springboot3.0了 学习无止境&#xff1…

【使用Python编写游戏辅助工具】第三篇:鼠标连击器的实现

前言 这里是【使用Python编写游戏辅助工具】的第三篇&#xff1a;鼠标连击器的实现。本文主要介绍使用Python来实现鼠标连击功能。 鼠标连击是指在很短的时间内多次点击鼠标按钮&#xff0c;通常是鼠标左键。当触发鼠标连击时&#xff0c;鼠标按钮会迅速按下和释放多次&#xf…

言情小说怎么推广?如何推广网络小说?

网络小说是一种文学形式&#xff0c;它的受众群体相当广泛&#xff0c;其实也面临着很强的竞争&#xff0c;因此&#xff0c;网络推广是小说宣传的一项重要工作&#xff0c;这里小马识途营销顾问就分享一下小说推广的渠道和方法。 1、软文推广 在推广小说的过程中&#xff0c;…

面试10000次依然会问的【synchronized】,你还不会?

引言 synchronized 关键字是实现线程同步的核心工具&#xff0c;它能够确保在任一时刻&#xff0c;只有一个线程能够访问被同步的方法或代码块。 这不仅保证了操作的原子性&#xff0c;即这些操作要么完全执行&#xff0c;要么完全不执行&#xff1b;同时也确保了操作的可见性…

高效操作,轻松打造企业百度百科,展现实力形象

百度百科已经成为企业提升形象的重要渠道&#xff0c;拥有自己的百科词条意味着企业在互联网上拥有更高的知名度和可信度。接下来&#xff0c;将为大家介绍企业百度百科的创建过程和一些技巧&#xff0c;帮助企业更好地在百度百科上展现自身实力。 首先&#xff0c;创建企业百度…

基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 Tensorflow是一个流行的机器学习框架&#xff0c;可用于训练和部署各种人工智能模型。玉米病害识别系统基于Tensorf…

明明用的不是自己机器视觉软件,甚至是盗版,机器视觉公司为什么还要申请那么多专利?

我首先看下专利是什么&#xff1f; 专利分为发明、实用新型、外观设计三种类型。 发明是指对产品、方法或者其改进所提出的新的技术方案。 实用新型是指对产品的形状构造或者其结合所提出的适于实用的新的技术方案。一般对日用品、机械、电器等产品的简单改进比较适用于申请…

Mysql数据目录结构以及文件类型解析

目录 1. 数据目录 2. Data目录 3. 数据库目录 1&#xff09;db.opt 2&#xff09;.frm 3&#xff09;.MYD和.MYI 4&#xff09;.ibd 5&#xff09;.ibd和.ibdata 在 MySQL 中&#xff0c;物理文件存放在数据目录中。数据目录与安装目录不同&#xff0c;安装目录用来存储…

NLP之Bert介绍和简单示例

文章目录 1. Bert 介绍2. 代码示例 1. Bert 介绍 2. 代码示例

Express框架开发接口之轮播图API

1.获取所有轮播图、 // 处理轮播图 const handleDB require(../handleDB/index) // 获取所有轮播图 exports.allCarousel (req, res) > {(async function () {let results await handleDB(res, "book_carousel", "find", "查询数据出错&#xf…

Python 生成Android不同尺寸的图标

源代码 # -*- coding: utf-8 -*- import sys import os import shutil from PIL import Imagedef generateAndroidIcons():imageSource icon.pngicon Image.open(imageSource)sizes [(android/drawable,512),(android/drawable-hdpi,72),(android/drawable-ldpi,36),(andro…

C# 发送邮件

1.安装 NuGet 包 2.代码如下 SendMailUtil using MimeKit; using Srm.CMER.Application.Contracts.CmerInfo; namespace Srm.Mail { public class SendMailUtil { public async static Task<string> SendEmail(SendEmialDto sendEmialDto,List<strin…

11月2日星期四今日早报简报微语报早读

11月2日星期四&#xff0c;农历九月十九&#xff0c;早报微语早读分享。 1、茅台深夜提价&#xff1a;11月1日起飞天、五星出厂价格平均上调约20&#xff05;&#xff0c;贵州茅台&#xff1a;市场指导价不变&#xff1b; 2、杭州拟发文规范直播电商业&#xff1a;不得要求商…

2015年亚太杯APMCM数学建模大赛C题识别网络中的错误连接求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 C题 识别网络中的错误连接 原题再现 网络是描述真实系统结构的强大工具——社交网络描述人与人之间的关系&#xff0c;万维网描述网页之间的超链接关系。随着现代技术的发展&#xff0c;我们积累了越来越多的网络数据&#xff0c;但这些数据部…

vs2013/2015/2019扩展-联机提示“未能建立到服务器的连接“/“基础连接已经关闭: 发送时发生错误“/“远程主机强迫关闭了一个现有的连接“

VS2013\VS2015 输入命令 [Net.ServicePointManager]::SecurityProtocol[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12 采用上述方法偶尔可以有效&#xff0c;重新启动VS就没用了 VS2019 怎么样都不行 最终解决办法&#xff1a;换一…

CRM系统如何帮助企业实现管理信息化?

21世纪的今天&#xff0c;企业不重视CRM信息化会导致什么后果&#xff1f;我们先来看这个例子—— 假设有一家中小型电子商务公司&#xff0c;他们销售各种电子产品&#xff0c;如手机、平板、电脑和配件等。在开始使用CRM系统之前&#xff0c;他们的客户数据分散在各个部门的…

自己动手实现一个深度学习算法——三、神经网络的学习

文章目录 1.从数据中学习1&#xff09;数据驱动2&#xff09;训练数据和测试数据 2.损失函数1)均方误差2)交叉熵误差3)mini-batch学习 3.数值微分1&#xff09;概念2&#xff09;数值微分实现 4.梯度1&#xff09;实现2&#xff09;梯度法3&#xff09;梯度法实现4&#xff09;…

kvm--存储挂载

创建存储卷 然后后面分别挂载到虚拟机不同目录下 查看磁盘 格式化&#xff08;需要挂载的分区或磁盘&#xff09; 获得UUID 挂载磁盘或分区 开机自动挂载 vim /etc/fstab mount -a 不报错就可以了

linux驱动学习加强版-7(平台虚拟总线的引入)

文章目录 一、为什么要引入平台虚拟总线二、平台虚拟总线架构三、使用platform框架去写一个驱动 一、为什么要引入平台虚拟总线 Linux platform driver机制和传统的device_driver机制相比&#xff0c;一个十分明显的优势在于platform机制将本身的资源注册进内核&#xff0c;由…

【sql注入】sql关卡1~4

前言&#xff1a; 靶场自取 level-1 测试注入点 POC: 1,1,1,1"",1/1,1/0 》存在注入点 爆破 POC: id-1andextractvalue(1,concat(0x7e,user(),0x7e))-- level-2 尝试注入点 POC1:admin POC2:admin POC3:adminandsleep(3)-- POC4: adminandif(1,1,0)0-- POC…