饼图、条形图、线条:SVG/VML 优于 Canvas

2024-04-04

我需要选择一个用于“标准”图表的库:饼图、折线图和条形图。

根据我的阅读,在我看来最好的格式是 SVG/VML,例如 Highcharts。现在 IE 9 接受了 SVG,它正在成为所有主要浏览器的标准。重新缩放和导出似乎比 Canvas 更容易。

不过,我发现有几个图表库依赖于 Canvas。我错过了什么吗?对于此类应用程序,是否有理由考虑使用 Canvas 而不是 SVG?


通常,您可以使用任一方法获得相同的结果。两者最终都会为用户在屏幕上绘制像素。主要区别在于 HTML5 Canvas 为您提供对结果(读取和写入)的像素级控制,而 SVG 是保留模式图形 API这使得使用 JavaScript 或 SMIL 动画处理事件或操作图稿变得非常容易,并且所有重绘都会为您处理。

一般来说,如果您满足以下条件,我建议您使用 HTML5 Canvas:

  • 需要对效果进行像素级控制(例如模糊或blending https://github.com/Phrogz/context-blender)
  • 有大量的数据点将呈现一次(并且可能平移),但在其他方面是静态的

如果您满足以下条件,请使用 SVG:

  • 希望在屏幕上绘制的复杂对象与事件相关联(例如,移动数据点以查看工具提示)
  • 希望结果能以高分辨率打印
  • 需要独立地对各个图形部分的形状进行动画处理
  • 将在输出中包含您希望被搜索引擎索引的文本
  • 想要使用 XML 和/或 XSLT 生成输出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

饼图、条形图、线条:SVG/VML 优于 Canvas 的相关文章

随机推荐

  • 在 heroku 上以沙箱模式运行 Rails 控制台

    在文档中找不到它 在SO上也找不到它 但是有没有办法在heroku Celadon Cedar 上以沙盒模式运行Rails 3 2 x 控制台 相当于 rails console sandbox 对于更 Heroku 方式 的替代方案 he
  • 使用 JQuery 和 Django 上传图像

    在继续阅读之前 请相信我 我已经阅读了有关此主题的所有其他帖子 但没有一个对您有帮助 我正在尝试向我的网站添加图像上传功能 我想上传图片 通过 ajax 帖子 我无法让这个工作 这是我所拥有的 HTML 我有一个特殊的设置 以便显示图像而不
  • 屏幕截图安全桌面

    我正在处理屏幕共享项目 我正在使用以下功能捕获桌面屏幕 它工作正常 但每当安全桌面提示提升 https learn microsoft com en us windows security threat protection securit
  • 我如何在asp.net core 2.2中实现Cookie基础身份验证和jwt?

    我想同时使用基于 cookie 的身份验证和jwt在我的程序中 使用身份验证用户来访问mvc具有登录名和 JWT 的控制器来访问 WebApi 资源 我尝试使用其中两个首先 我的客户端可以使用用户名和密码登录并通过 cookie 进行身份验
  • 运行 ng new 命令时茉莉花版本错误

    我在运行 ng new 命令时遇到错误 在 ng new Project Name Here 期间触发以下错误 无法解决依赖关系 错误同级 jasmine core gt 3 7 1 来自 电子邮件受保护 cdn cgi l email p
  • 使用 TOpenDialog 选择目录

    我真的很想知道使用 TOpenDialog 选择目录的各种方法 无论是下载新组件还是使用 Delphi 提供的内容 但最好使用 Delphi 提供的内容 在此之前 我一直在使用 SelectDirectory 命令 但我认为对于我的程序的用
  • 如何在Python中使库异步

    在我的工作中 他们 利用 龙卷风 但他们没有异步库 是什么让库变得异步 以便它更适合龙卷风之类的东西 有没有什么好的例子或者我猜你在做什么 enter or exit 这可以表明您没有阻止 我发现很难将一些材料拼凑在一起 如果您的库不是异步
  • 如果定义了构造函数,pytest 跳过测试类

    我有以下通过 py test 运行的单元测试代码 构造函数的存在会使整个类在运行时跳过 py test v s 已收集 0 件 已跳过 1 件 谁能向我解释 py test 的这种行为吗 我有兴趣了解 py test 行为 我知道不需要构造
  • UITextView文本背景颜色

    我正在尝试获得一个透明的 UITextView 并且我知道如何设置它 我还想要的是在已显示的文本下方有一个彩色背景 同样 文本视图背景会将整个视图矩形设置为给定的颜色 我想要的是文本下方的颜色 有什么简单的方法可以实现这样的目标吗 据我所知
  • 有没有办法在提供左值和右值重载的同时删除重复代码?

    在学习 C 时 我决定编写一个简单的模板化二叉搜索树 bst 并遇到以下问题 我希望能够构造通过向其传递一个左值来实现 bst 例如const T val和一个像这样的右值T val 同样我希望能够insert左值和右值 所以我最终得到了很
  • getChildFragmentManager() 和 viewpager

    我有同样的问题导航回 FragmentPagerAdapter gt 片段为空 https stackoverflow com questions 17672779 navigating back to fragmentpageradapt
  • Javascript 中的链表与数组

    所以我在 JS 中玩弄链表并提出以下问题 假设我们有一个数组和一个链表 都有 5000 个元素 我们想在索引 10 处插入新元素 数组方式非常简单 我们在给定索引处插入新元素 并将其余元素向前移动一个索引 所以我尝试用链表来做到这一点 并以
  • Django SplitDateTime 小部件抛出“列表”对象没有属性“条带”

    我正在尝试使用 django 创建具有开始日期时间和结束日期时间的事件 在表单中 我尝试使用 AdminSPlitDateTime 小部件分隔日期和时间输入 我希望有一些 JS 用于输入 当我尝试创建事件时 django 给我 list 对
  • IntelliJ DataGrip 如何启用添加行?

    我使用 DataGrip 有几天了 我真的很喜欢它 但它有一个可疑的行为 在我打开的某些表中 我无法添加新行 在同一数据库的其他表中它工作正常 添加行按钮已禁用 因此我无法添加新行 如果表中有行 我可以删除它们 但仍然无法添加新行 我在网上
  • ionic 应用程序构建失败,并显示错误“链接器命令失败,退出代码 1(使用 -v 查看调用)”

    当尝试使用构建时ionic run ios lc我在终端中看到以下错误 BUILD FAILED The following build commands failed Ld build emulator xXxXxXx app xXxXx
  • 如何在没有服务器或服务器端脚本的情况下创建动态访问数据库的内联网网站?

    问题是 必须在没有服务器托管的情况下创建 Intranet 网页 并且我一直在尝试使用 HTML 和 javascript 更新 Access 数据库 但这不适用于以下代码 请帮助 当以下代码从 Visual Studio 运行时 出现错误
  • 无法找到 actionbarsherlock.apk

    我正在尝试从 Eclipse 在真实设备上运行我的应用程序 添加 actionbarsherlock 作为参考后 我无法摆脱此错误 Could not find actionbarsherlock apk 这是完整的控制台输出 2013 0
  • 动态生成的按钮,点击后不被执行

    我需要生成一个动态按钮列表 我已经这样做了 并附加了一个事件处理程序 但是事件处理程序并未被执行 private void GetOptions EcoBonusRequest request var ecobonuswworkflow W
  • WiX:如果虚拟目录包含嵌套目录,如何跳过删除 iis:WebVirtualDir?

    我的msi安装和卸载共享资源 IIS虚拟目录 MyTeamServices 它工作得很好 除了在卸载过程中删除该虚拟目录 即使有人创建了嵌套虚拟目录 不是通过使用安装程序 只是 手动 当我期望看到 WiX 处理 HDD 文件夹的标准行为时
  • 饼图、条形图、线条:SVG/VML 优于 Canvas

    我需要选择一个用于 标准 图表的库 饼图 折线图和条形图 根据我的阅读 在我看来最好的格式是 SVG VML 例如 Highcharts 现在 IE 9 接受了 SVG 它正在成为所有主要浏览器的标准 重新缩放和导出似乎比 Canvas 更