返回顶部
首页 > 资讯 > 前端开发 > JavaScript >EChartsCanvas渲染在SVG合理运用
  • 421
分享到

EChartsCanvas渲染在SVG合理运用

EChartsCanvas渲染底图SVGEChartsCanvas 2022-12-23 15:12:30 421人浏览 独家记忆
摘要

目录canvas渲染SVG 底图Canvas渲染 使用 Canvas 渲染器(默认)等价于:使用 SVG 渲染器 var chart = echarts.init(contain

Canvas渲染

使用 Canvas 渲染器(默认)等价于:使用 SVG 渲染器

var chart = echarts.init(containerDom, null, {renderer: 'canvas'});
var chart = echarts.init(containerDom);
var chart = echarts.init(containerDom, null, {renderer: 'svg'});

在大多数浏览器侧图库中,将选择SVG或画布进行渲染。对于绘制图表,这两种技术通常是可替换的,并且具有类似的效果。然而,在某些情况下,它们的性能和能力是不同的。因此,他们的选择成为一个长期存在的话题,不容易有一个标准答案。 Apache EChartsTM从一开始就使用Canvas绘制图表(除了使用VML for IE8-)。ECharts v4.0发布了SVG渲染器,它提供了一个新的选择。通过在初始化图表实例时将渲染器参数设置为“canvas”或“svg”,可以方便地指定渲染器。 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM,引用注册过的底图。

$.get('map/organ.svg', function (svg) {
    echarts.reGISterMap('organ_diagram', {svg: svg});
    var chart = echarts.init(document.getElementById('main'))。
    chart.setOption({
        geo: [{
            map: 'organ_diagram',
            ...
        }]
    });
});

一般来说,Canvas更适合绘制具有大量图形元素的图表(通常由大量数据导致)(例如热图表、地理坐标系或平行坐标系上的大型折线图或散点图),也适合实现一些视觉效果。然而,在许多场景中,SVG具有重要的优势:它具有较低的内存消耗(这对于移动终端尤为重要)、略高的渲染性能,并且在用户使用浏览器内置的缩放功能时不会模糊。 我们可以根据硬件和软件环境、数据量和功能需求综合考虑选择哪种渲染器。

import 'zrender/lib/svg/svg';

在良好的硬件和软件环境以及少量数据(如PC上的业务报告)的情况下,可以使用两个渲染器,而不会产生太多混淆。 在环境较差且性能问题需要优化的场景中,可以通过实验确定使用哪个渲染器。例如,我有以下经历: 当需要创建许多ECharts实例并且浏览器容易崩溃(可能是因为Canvas的数量超过了手机的容量)时,可以使用SVG渲染器进行改进。粗略地说,如果图表在低端Android机器上运行,或者我们使用一些特定的图表,例如水球图表,SVG渲染器可能会更好。 当数据量较大且有许多交互时,可以选择画布渲染器。 我们强烈欢迎开发人员就他们的经验和场景向我们提供反馈,以帮助我们更好地优化。 注意:除了某些特殊渲染可能依赖于画布:例如眩光尾迹效果、混合效果的热图等,SVG支持的大多数功能。

SVG 底图

如果我们想控制SVG中的某些元素或允许某些元素交互,我们首先需要在SVG中标记这些元素:向这些元素添加名称属性(在下文中,我们将添加了名称属性的元素称为“命名元素”)。许多功能(如select、emphasis、focus plus、label、labelLayout和工具提示)取决于元素的命名。 对于以下示例,我们只将name属性name=“named_rect”添加到左侧SVG路径:

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="Http://www.w3.org/2000/svg" version="1.2" fill-rule="evenodd" xml:space="preserve">
    <path name="named_rect" d="M 0,0 L 0,100 100,100 100,0 Z" fill="#765" />
    <path d="M 150,0 L 150,100 250,100 250,0 Z" fill="#567" />
</svg>

option = {
    geo: {
        map: 'some_svg',
        regions: [{
            name: 'element_name_1',
            itemStyle: { ... }
        }, {
            name: 'element_name_2',
            itemStyle: { ... }
        }]
    }
};

虽然SVG元素样式(如颜色、字体、线宽等)可以直接在SVG文件中定义,但ECharts还支持在选项中为命名元素定制样式,这可以提供很多方便。 您可以在geo中设置样式。itemStyle或系列映射。itemStyle(还包括emphasis.itemStyle,select.itemStyle、blur.itemStyle和regions[i].itemStyle以及regions[i]。emphasis.itemStyle,regions[i].select.iitemStyle和regions[i]。select.item Style和region[i]。blur.iitemStyle)。您也可以在此处删除某些命名元素的默认样式(例如,在设置emphasis.itemStyle.color:null后,当鼠标悬停时填充颜色不会改变)。

myChart.on('geoselectchanged', function (params) {
    var selectedNames = params.allSelected[0].name;
    console.log('selected', selectedNames);
});

此外,在使用序列图时,还可以使用visualMap组件为命名元素指定样式。参见烹饪牛的例子。 注意:只有这些命名元素才能在itemStyle中设置样式:矩形、圆形、直线、椭圆、多边形、多段线和路径。

option = {
    geo: {
        map: 'some_svg',
        emphasis: {
            label: {
                show: false
            }
        }
    }
};

虽然可以在SVG中直接定义/来显示文本标签,但ECharts也支持使用geo。标签或序列图。label可在基础地图上设置标签。 默认情况下,在鼠标悬停时启用标签功能。 'name1' 是一个 SVG 元素的名字。

// 
myChart.on('click', { geoIndex: 0, name: 'name1' }, function (params) {
    console.log(params);
});

如果使用geo BoundinGCoords作为边界矩形。 否则,如果设置了<svg width=“…”height=“…”>,[0,0,width,height]将用作边界矩形。(如果仅设置了宽度或高度,则仅使用[0,width]或[0,height]。)。 否则,如果设置了,则viewBox将用作边界矩形。 否则,从整个SVG的所有元素的并集获得最终的边界矩形。 如果地理中心或地理缩放,则从上述1~4中获得的边界矩形将相应地进行变换。 确认边界矩形后,它将被放置在相应的地理视图端口中: 如果使用layoutCenter和layoutSize,则边界矩形将放置在地理视图端口的中心并尽可能填充(保持纵横比)。 如果使用顶部、右侧、底部和左侧,则边界矩形将被拉伸,并且地理视图端口将被完全填充。

option = {
    geo: {
        map: 'some_svg'
    },
    series: {
        type: 'effectScatter',
        coordinateSystem: 'geo',
        geoIndex: 0,
        data: [
            // SVG local coords.
            [488.2358421078053, 459.70913833075736],
            [770.3415644319939, 757.9672194986475],
            [1180.0329284196291, 743.6141808346214],
        ]
    }
};

以上就是ECharts Canvas渲染在SVG合理运用的详细内容,更多关于ECharts Canvas渲染底图SVG的资料请关注编程网其它相关文章!

--结束END--

本文标题: EChartsCanvas渲染在SVG合理运用

本文链接: https://lsjlt.com/news/175676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • EChartsCanvas渲染在SVG合理运用
    目录Canvas渲染SVG 底图Canvas渲染 使用 Canvas 渲染器(默认)等价于:使用 SVG 渲染器 var chart = echarts.init(contain...
    99+
    2022-12-23
    ECharts Canvas渲染底图SVG ECharts Canvas
  • JTable渲染器怎么在Java中使用
    JTable渲染器怎么在Java中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JButtonTableExample.javapackage a...
    99+
    2023-05-30
    java jtable
  • 怎么在python中利用jinja2实现渲染
    这期内容当中小编将会给大家带来有关怎么在python中利用jinja2实现渲染,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相...
    99+
    2023-06-14
  • CSS3 3D行星运转与浏览器渲染的原理是什么
    本篇内容介绍了“CSS3 3D行星运转与浏览器渲染的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • 前端渲染CSR和SSR的结合使用思路详解
    目录1. 思路2. 以将文件设置成CSR为例3. 哪些文件使用CSR小聊: 我们都知道,以往的CSR(客户端浏览器渲染)多多少少会有一点点 SEO 问题,不只是 SPA(单页面应用程...
    99+
    2022-12-22
    前端渲染CSR和SSR使用 CSR和SSR使用
  • Three.js PBR物理渲染属性及使用介绍
    目录详解 Three.js PBR 物理渲染什么是 PBR?如何启用 PBR?PBR 的属性颜色(color)金属度(metalness)粗糙度(roughness)折射率(refr...
    99+
    2023-05-17
    Three.js PBR 物理渲染 PBR 物理渲染属性
  • Vue 列表渲染 key的原理和作用详解
    目录列表渲染 key 的原理和作用key的原理分析key的作用总结列表渲染 key 的原理和作用 key就是为该节点做身份标识,如果对key绑定index的值,那么很容易出现问题: ...
    99+
    2024-04-02
  • 在vue.js渲染完界面后怎么再调用函数
    这篇文章主要讲解了“在vue.js渲染完界面后怎么再调用函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在vue.js渲染完界面后怎么再调用函数”吧!vue.js渲染完界面后调用函数在使用...
    99+
    2023-07-02
  • 使用node-canvas在服务端渲染echarts图表解析
    目录踩了很长时间的坑,总算是能跑起来了友情提示:入坑请慎重在这个过程中,还有可能报错,比较常见的有这些我只说说我试过有用的办法踩了很长时间的坑,总算是能跑起来了 但是如果要我给ech...
    99+
    2022-11-13
    使用node-canvas 渲染echarts图表 node-canvas渲染echarts图表
  • 使用C++在不同平台上进行图形渲染
    c++++ 中的跨平台图形渲染提供了跨操作系统和设备的图形一致性。常见的库包括 opengl(跨平台且广泛支持)、vulkan(高性能和控制力)、directx(专用于 windows)...
    99+
    2024-05-10
    c++ 跨平台 图形渲染 linux
  • 运用C++进行图形渲染的常见陷阱和解决方案
    图形渲染中常见的陷阱:纹理坐标失真:确保正确映射和归一化纹理坐标,使用 vbo 存储纹理坐标。深度测试故障:启用深度测试,使用 msaa 和深度偏移优化,调整深度偏移参数。内存泄漏:使用...
    99+
    2024-05-10
    c++ 陷阱 图形渲染 编译错误
  • Vue在页面数据渲染完成之后如何调用
    这篇文章主要为大家展示了“Vue在页面数据渲染完成之后如何调用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue在页面数据渲染完成之后如何调用”这篇文章吧。在...
    99+
    2024-04-02
  • 怎么在React条件渲染中使用三元表达式
    本篇内容介绍了“怎么在React条件渲染中使用三元表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!三元...
    99+
    2024-04-02
  • 在vue.js渲染完界面之后如何再调用函数
    目录vue.js渲染完界面后调用函数1.下面开始介绍下2.运行之后3.此时查询官方api文档发现4.继续查询api文档发现5.最终把watch和nextTick组合一起6.运行后发现...
    99+
    2024-04-02
  • 服务器端渲染与 Vue Nuxt.js:提升 Web 应用速度的结合
    服务器端渲染 (SSR) 的魔力 在传统的客户端渲染应用程序中,整个页面在用户浏览器中动态加载和生成。这可能会导致缓慢的页面加载时间和响应速度不佳。另一方面,服务器端渲染 (SSR) 在服务器端完全渲染页面,然后将已渲染的 HTML 发...
    99+
    2024-02-19
    服务器端渲染 SSR Vue Nuxt.js Web 应用性能 速度
  • 动态ip代理中如何用爬虫实现前端页面渲染
    本篇文章为大家展示了动态ip代理中如何用爬虫实现前端页面渲染,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  在很早以前,几乎绝大多数网站全全都是利用后端渲染的,即在服务器端组装形成完整的HTML页...
    99+
    2023-06-02
  • 服务器端渲染在 Vue Nuxt.js 中的作用:提高性能和用户体验
    服务器端渲染(SSR)是一种技术,可以在服务器上预先渲染 Vue.js 应用程序。通过这种方式,浏览器不仅会收到应用程序的静态 HTML 输出,还会收到已经转换为 DOM 树的应用程序状态。 SSR 的优点: 更快的初始加载时间:由于...
    99+
    2024-02-19
    Vue Nuxt.js 服务器端渲染 性能 用户体验
  • 服务器端渲染与 Vue Nuxt.js:让您的 Web 应用在竞争中脱颖而出
    服务器端渲染的优势 服务器端渲染是指在服务器上呈现页面,而不是在客户端浏览器中呈现。这带来了以下优势: 1. 提升 SEO:搜索引擎可以轻松索引和抓取服务器端渲染的页面,因为它提供了完整的 HTML 内容。这对于内容丰富的网站和特定关键...
    99+
    2024-02-19
    服务器端渲染 Vue Nuxt.js SEO 性能 用户体验
  • HTML+CSS如何合理运用div标签
    这篇文章主要为大家展示了“HTML+CSS如何合理运用div标签”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML+CSS如何合理运用div标签”这篇文章吧...
    99+
    2024-04-02
  • 小程序如何合理运用推广技巧
    这篇文章主要介绍了小程序如何合理运用推广技巧的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇小程序如何合理运用推广技巧文章都会有所收获,下面我们一起来看看吧。首先,分发实现了流量分裂微信小程序处于大社交微信网络该...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作