echarts怎么用,pycharm中怎么导入pyecharts

本文分享自华为云社区《》,作者:DevUI。前言一个网页中可以创建多个echarts实例。每个echarts实例中可以创建多个图表和坐标系等等(用option来描述)。准备一个DOM节点(作为echa

本文分享自华为云社区《》,作者:DevUI。

前言

一个网页中可以创建多个 echarts 实例。 每个 echarts 实例中可以创建多个图表和坐标系等等(用 option 来描述)。 准备一个 DOM 节点(作为 echarts 的渲染容器),就可以在上面创建一个 echarts 实例。每个 echa。

echarts是一个很强大的图表库,除了我们常见的图表功能,echarts有一个自定义图形的功能,这个功能可以让我们很简单地在画布上绘制一些非常规的图形,基于此,我们来玩一些花哨的。

echarts怎么用

Flappy Bird小游戏体验地址(看看你能玩几分):

foolmadao.github.io/echart-flap…

下面我们来一步步实现他。

首先要去echarts和zrender官网上下载需要的文件 然后将下载下来的文件放在你项目的目录下,我将文件都放在我项目的js目录下。需要注意的是导入的zrender文件夹名不要改变,zrender和echarts在同一个目录下面。在项目中引用相关。

1 在坐标系中画一只会动的小鸟

首先实例化一个echart容器,再从网上找一个像素小鸟的图片,将散点图的散点形状,用自定义图片的方式改为小鸟。

          方法一:加一个div使用绝对定位存放副标题           方法二:使用伪元素绝对定位存放副标题 2、饼图的series列表下的label即在外部显示又。

const myChart = echarts.init(document.getElementById(&39;));option = {series: [{name: &39;, type: &39;, symbolSize: 50,pycharm中怎么导入pyecharts, symbol: &39;, data: [[50,80]], animation: false}, ]};myChart.setOption(option);

要让小鸟动起来,就需要给一个向右的速度和向下的加速度,并在每一帧的场景中刷新小鸟的位置。而小鸟向上飞的动作,则可以靠角度的旋转来实现,向上飞的触发条件设置为空格事件。

option = {series: [{xAxis: {show: false, type: &39;, min: 0, max: 200, }, yAxis: {show: false, min: 0, max: 100}, name: &39;, type: &39;, symbolSize: 50, symbol: &39;, data: [[50,80]], animation: false}, ]};// 设置速度和加速度let a = 0.05;let vh = 0;let vw = 0.5timer = setInterval(() => {// 小鸟位置和仰角调整vh = vh - a;option.series[0].data[0][1] += vh;option.series[0].data[0][0] += vw;option.series[0].symbolRotate = option.series[0].symbolRotate ? option.series[0].symbolRotate - 5 : 0;// 坐标系范围调整option.xAxis.min += vw;option.xAxis.max += vw;myChart.setOption(option);},25);

效果如下

2 用自定义图形绘制障碍物

echarts自定义系列,渲染逻辑由开发者通过renderItem函数实现。该函数接收两个参数params和api,params包含了当前数据信息和坐标系的信息,api是一些开发者可调用的方法集合,常用的方法有:

api.value(…),意思是取出 dataItem 中的数值。例如 api.value(0) 表示取出当前 dataItem 中第一个维度的数值。

api.coord(…),意思是进行坐标转换计算。例如 var point = api.coord([api.value(0),api.value(1)]) 表示 dataItem 中的数值转换成坐标系上的点。

api.size(…), 可以得到坐标系上一段数值范围对应的长度。

api.style(…),可以获取到series.itemStyle 中定义的样式信息。

灵活使用上述api,就可以将用户传入的Data数据转换为自己想要的坐标系上的像素位置。

renderItem函数返回一个echarts中的graphic类,可以多种图形组合成你需要的形状,graphic类型。对于我们游戏中的障碍物只需要使用矩形即可绘制出来,我们使用到下面两个类。

并和步骤1创建的js函数进行交互 懒加载一个wkwebView对象 懒加载一个button 响应button的点击事件,当button被点击时,创建一个json字符串,传递给html页面,这样就可以完成echarts图形的绘制 。

type: group,组合类,可以将多个图形类组合成一个图形,子类放在children中。

type: rect, 矩形类,通过定义矩形左上角坐标点,和矩形宽高确定图形。

/ 数据项定义为[x坐标,下方水管上侧y坐标, 上方水管下侧y坐标]data: [[150,50,80], ...]renderItem: function (params,api) {// 获取每个水管主体矩形的起始坐标点let start1 = api.coord([api.value(0) - 10,api.value(1)]);let start2 = api.coord([api.value(0) - 10,100]);// 获取两个水管头矩形的起始坐标点let startHead1 = api.coord([api.value(0) - 12,api.value(1)]);let startHead2 = api.coord([api.value(0) - 12,api.value(2) + 8])// 水管头矩形的宽高let headSize = api.size([24,8])// 水管头矩形的宽高let rect = api.size([20,api.value(1)]);let rect2 = api.size([20,100 - api.value(2)]);// 坐标系配置const common = {x: params.coordSys.x, y: params.coordSys.y, width: params.coordSys.width, height: params.coordSys.height}// 水管形状const rectShape = echarts.graphic.clipRectByRect({x: start1[0], y: start1[1], width: rect[0], height: rect[1]},common);const rectShape2 = echarts.graphic.clipRectByRect({x: start2[0], y: start2[1], width: rect2[0], height: rect2[1]}, common)// 水管头形状const rectHeadShape = echarts.graphic.clipRectByRect({x: startHead1[0], y: startHead1[1], width: headSize[0], height: headSize[1]},common);const rectHeadShape2 = echarts.graphic.clipRectByRect({x: startHead2[0], y: startHead2[1], width: headSize[0], height: headSize[1]},common);// 返回一个group类,由四个矩形组成return {type: &39;, children: [{type: &39;, shape: rectShape, style: {...api.style(), lineWidth: 1, stroke: &000&39;rect&39;39;}}, {type: &39;, shape: rectHeadShape, style: {...api.style(), lineWidth: 1, stroke: &000&39;rect&39;39;}}]};}。

颜色定义,我们为了让水管具有光泽使用了echarts的线性渐变色对象。

另外,用一个for循环一次性随机出多个柱子的数据

function initObstacleData() {// 添加minHeight防止空隙太小let minHeight = 20;let start = 150;obstacleData = [];for (let index = 0; index < 50; index++) {const height = Math.random() * 30 + minHeight;const obstacleStart = Math.random() * (90 - minHeight);obstacleData.push([start + 50 * index, obstacleStart, obstacleStart + height > 100 ? 100 : obstacleStart + height])}}

再将背景用游戏图片填充,我们就将整个游戏场景,绘制完成:

3 进行碰撞检测

由于飞行轨迹和障碍物数据都很简单,所以我们可以将碰撞逻辑简化为小鸟图片的正方形中,我们判断右上和右下角是否进入了自定义图形的范围内。

在特定范围内,依据Math.floor(x / 50)获取到对应的数据,即可判断出两个边角坐标是否和柱子区域有重叠了。在动画帧中判断,如果重叠了,就停止动画播放,游戏结束。

企业回选上海普加软件有限公司,普加甘特图,是WEB甘特图高性能解决方案。适用于构建项目管理、生产排程等进度计划管理软件。

echarts怎么用

/ centerCoord为散点坐标点function judgeCollision(centerCoord) {if (centerCoord[1] < 0 || centerCoord[1] > 100) {return false;}let coordList = [[centerCoord[0] + 15,centerCoord[1] + 1], [centerCoord[0] + 15,centerCoord[1] - 1], ]for (let i = 0; i < 2; i++) {const coord = coordList[i];const index = coord[0] / 50;if (index % 1 < 0.6 && obstacleData[Math.floor(index) - 3]) {if (obstacleData[Math.floor(index) - 3][1] > coord[1] || obstacleData[Math.floor(index) - 3][2] < coord[1]) {return false;}}}return false}function initAnimation() {// 动画设置timer = setInterval(() => {// 小鸟速度和仰角调整vh = vh - a;option.series[0].data[0][1] += vh;option.series[0].data[0][0] += vw;option.series[0].symbolRotate = option.series[0].symbolRotate ? option.series[0].symbolRotate - 5 : 0;// 坐标系范围调整option.xAxis.min += vw;option.xAxis.max += vw;// 碰撞判断const result = judgeCollision(option.series[0].data[0])if(result) { // 产生碰撞后结束动画endAnimation();}myChart.setOption(option);},25);}

2.var myChart=require('echarts').init(document.getElementById("echart"));一般建议使用第一种方法进行初始化操作。3、第三步,设置option属性,来给图表设置数据,option是数组元素,tooltip:提示框,legend图例,calculab。

echarts怎么用

总结

echarts提供了强大的图形绘制自定义能力,要使用好这种能力,一定要理解好数据坐标点和像素坐标点之间的转换逻辑,这是将数据具象到画布上的重要一步。

运用好这个功能,再也不怕产品提出奇奇怪怪的图表需求。

源码地址:github.com/foolmadao/e…

上一篇 2023年02月06 01:33
下一篇 2023年02月10 22:16

相关推荐

  • 广州的区号是多少,广州市固定电话区号

    广州市固定电话区号,记者了解到,本次具体投放号段为粤AX00A0-粤AX99Z9、粤AY00A0-粤AY99Z9、粤AZ00A0-粤AZ79Z9。广大车主可通过互联网交通安全综合服务管理平台预选号牌(

    2023年02月26 241
  • 苹果外屏多少钱

    iPhone14系列同时,目前在苹果官网上,iPhone14的相关维修价格已出炉,具体价格如下:iPhone14标准版电池:748元;屏幕:2298元;摄像头:1198元;玻璃背壳:1298元;iPh

    2023年02月24 287
  • 长途话费多少钱一分钟,跨省打电话有长途费吗

    400电话是双向收费的计费规则,简单来说您的客户拨打您公司的400电话,您的客户须得按当地的通话费用计收电话费,跨省打电话有长途费吗,那么作为电话接听方公司也需结算400电话接听的电话费,实际需要花多

    2023年03月02 283
  • 移动初始服务密码是多少,10086服务密码忘了怎么办

    2020级的小耳铃们已经来到了华水开启了人生中一个全新的生活体验同时也不断积攒在华水的生活、学习技能近日,许多小可爱在询问在华水“冲浪”需要哪些技能呢?华仔第一时间就为大家总结了在华水必备的冲浪攻略1

    2023年03月16 291
  • 怎么看图片分辨率,手机相册分辨率怎么看

    手机相册分辨率怎么看,随着这段时间考试变多,最近有很多小伙伴在上传证件照的时候总是上传失败提示照片分辨率不符合要求,很多小伙伴都不知道什么是照片分辨率,更不用说去给照片修改分辨率了,那么今天就来给大家

    2023年02月05 211
  • 怎么盗取qq

    教你3分钟盗qq登录密码这样的说法实在有点夸张,毕竟不懂技术的小白想去盗号是很困难的,比如最简单的钓鱼盗号网站,就算不会写代码,也得会建网站才行啊,所以新手想3分钟去盗别人的号是很困难的。除非腾讯的数

    2023年02月15 260
  • 1g是多少mb,1G流量是多少GB

    手机流量是指手机上网产生的流量数据,用手机打开软件或进行互联网操作时,会和服务器之间交换数据,手机流量就是指这数据的大小。在我们的日常生活中,手机几乎已经成为了必不可少的一部分,1G流量是多少GB,而

    2023年02月22 286
  • 发送邮箱怎么发送

    国外邮件怎么发出去?国外邮件营销,国外邮件怎么发大文件?国内发国外邮件怎么发?怎么发邮件到国外邮箱?发送国外邮件用TOMVIP邮箱是更好的选择,群发单显是群发邮件时常用功能,有群发单显功能,发送邮箱怎

    2023年02月05 246
  • oppo刷机怎么刷,捡一个oppo手机怎么强制刷机

    【特别提醒】重要:该预览版仍处于早期开发阶段,建议慎重体验和做好备份!首先简单介绍下该版本信息哈。①支持硬件OPPOFindX5Pro/OPPOFindN,其他机型暂不支持。②版本内容捡一个oppo手

    2023年02月05 235
  • 起诉离婚多少钱,怎么直接从网上起诉

    起诉离婚费用其次起诉离婚费用一般分为两种:诉讼费和律师费。(1)诉讼费;如果不涉及财产,数额大概是50-300元不等。但大部分的离婚都涉及到财产分割。根据《诉讼费用交纳办法》规定,「离婚案件涉及财产分

    2023年03月03 296
  • 滴滴人工客服电话多少,滴滴400电话如何转人工

    滴滴400电话如何转人工,滴滴再次上线新的业务,开始往货运行业发展了。滴滴货运目前已经在全国多城市上线,对于有需要搬家等货运需求的人来说该平台非常便捷。那么,滴滴货运客服电话多少?不管是平台使用还是费

    2023年02月19 286
  • 快手客服电话是多少,快手未成年客服电话人工服务

    随着网络支付的迅速普及越来越多的人习惯网购热衷网购然而当您在开心愉快地购买完产品时您是否接到过自称网购平台客服的电话?他们是否告诉您您所购买产品的详细信息?他们是否要对您进行赔偿等等?……如果接到此类

    2023年03月08 263
  • 怎么下载word

    电脑怎么免费使用word,现在我们需要查找论文相关的资料都是直接使用中国知网,那么知网的论文应该如何下载呢?怎样才能下载我们常用和熟悉的Word格式呢?比如我们打开知网后根据需要的资料关键字进行搜索,

    2023年02月13 249
关注微信