热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十一、jqPlot饼图和圆环图

十一、jqPlot饼图和圆环图Abstract饼图和圆环图是将数据分解成各个组成

十一、jqPlot 饼图和圆环图

Abstract

饼图和圆环图是将数据分解成各个组成部分的绝佳方式。饼图是一个圆形的图表,分为扇形或“切片”,其主要目的是说明它们的相对比例:每个切片的弧长与它所代表的数量成比例。圆环图与饼图非常相似,但中间有一个洞,并支持多个系列的比较。在这一章中,你将会看到这两种图表。本章最后讨论了多维饼图。

饼图和圆环图是将数据分解成各个组成部分的绝佳方式。饼图是一个圆形的图表,分为扇形或“切片”,其主要目的是说明它们的相对比例:每个切片的弧长与它所代表的数量成比例。圆环图与饼图非常相似,但中间有一个洞,并支持多个系列的比较。在这一章中,你将会看到这两种图表。本章最后讨论了多维饼图。

饼图

在 jqPlot 中,默认情况下,数据被解释为折线图。如果您想在饼图中显示您的数据,您需要包括 PieRenderer 插件:

或者,如果您更喜欢使用内容交付网络(CDN)服务,您可以按如下方式操作:

你必须在options对象中做的唯一改变是在渲染器调用中用DonutRenderer替换pieRenderer对象,然后修改rendererOptions object中第一个扇区的起始角度。默认情况下,图表从圆圈的左侧开始,但通常必须从顶部开始。因此,有必要将startAngle属性设置为–90 度(见清单 11-6)。

清单 11-6。ch11_02.html

var optiOns= {

seriesDefaults: {

// Make this a pie chart.

renderer:$.jqplot.DonutRenderer,

rendererOptions: {

showDataLabels: true,

dataLabels: 'value',

sliceMargin: 3,

startAngle: -90

}

}

};

jQuery.jqplot ('myChart', [data], options);

这样你就得到了一个甜甜圈图(见图 11-3 ,与图 11-2 右下方的饼状图非常相似。

A978-1-4302-6290-9_11_Fig3_HTML.jpg

图 11-3。

A simple donut chart

但是,我们选择使用圆环图而不是饼图,因为它允许我们同时表示多个系列,从而比较其组成部分的比例。因此,继续这个例子,你可以比较两个不同群体的人所吃的食物。清单 11-7 说明了如何添加另一个数据数组。

清单 11-7。ch11_02.html

var data2 = [

['Dairy', 185],['Meat', 166], ['Grains', 243],

['Fish', 166],['Vegetables', 499], ['Fruit', 370]

];

将第二个数组添加到data,修改清单:

$.jqplot ('myChart', [data,``data2T2】

图 11-4 展示了报告两个数值系列的圆环图。

A978-1-4302-6290-9_11_Fig4_HTML.jpg

图 11-4。

A multiseries donut chart

看着图 11-4 ,你可以立刻看到一些基本的东西不见了:一个图例。图例是必需的,因为插件会自动为每个扇区分配一种颜色,因此没有颜色参考,很难理解图表。因此,在您将图例的show属性设置为'true'之后,您可以选择图例的位置。为了确定在哪个位置放置图例,jqPlot 使用 location 属性,将与基本方向对应的值分配给该属性:'n'(北)、's'(南)、'e'(东)和'w'(西)。但是,也可以使用组合,例如'ne',来指示东北方向的位置。

假设您决定将图例定位在图表的右侧,那么您将'e'分配给location属性(参见清单 11-8)。

清单 11-8。ch11_02.html

legend: {

show:true,

location: 'e'

}

图例自动报告数据数组中包含的标签,如图 11-5 所示。

A978-1-4302-6290-9_11_Fig5_HTML.jpg

图 11-5。

A multiseries donut chart with a legend

多级饼图

多级饼图是一种现代格式,非常适合可视化用于显示层次关系的数据。这种图表提供了一个层次结构,从圆圈中心的根节点开始,您可以跟踪成员资格,因为它们逐渐移动到外部圆圈。为了更好地理解这种图表,让我们以一系列动物为例,逐步确定它们的等级群体。

作为输入数据数组,你想插入三个数组(见清单 11-9)。这将产生三个层次。在第一个数组中,插入最后一级,直到第三个数组,它代表根。

清单 11-9。ch11_03.html

var data = [ ['Cat', 1],['Dog', 1], ['Mouse', 1],['Snake', 1],

['Turtle', 1], ['Jellyfish', 1], ['Cuttlefish', 1] ];

var data2 = [ ['Mammals', 3],['Reptiles', 2], ['Mollusks', 2] ];

var data3 = [ ['Vertebrates', 5],['Invertebrates', 2] ];

要生成多级饼图,实际上需要修改一个圆环图,将内孔的直径设置为零。在这种情况下,您需要显示标签所代表的动物或动物群的名称,而不是显示数值;您必须将dataLabels属性设置为'label'。最后要修改的是颜色的设置。jqPlot 提供的默认颜色是不够的,有必要为层次结构的每个级别定义一组颜色。优选地,将相似的颜色分配给属于同一组的动物,并且对于层级的连续级别也是如此。在清单 11-10 中,特别注意了分配给每个系列的颜色序列(层次级别)。

清单 11-10。ch11_03.html

var optiOns= {

seriesDefaults: {

renderer:$.jqplot.DonutRenderer,

rendererOptions: {

showDataLabels: true,

dataLabels: 'label',

startAngle: -90,

innerDiameter: 0,

ringMargin: 2,

shadow: false

}

},

series: [

{

seriesColors: ['#4bb2c5', '#4baacc', '#4b88aa', '#bbb2c5',

'#bbaa99', '#c5dd99', '#dddd77']

},

{

seriesColors:  ['#4bbbbb', '#ccb2c5', '#c5ff99']

},

{

seriesColors:  ['#aa5555', '#a3ffaa']

}]

};

$.jqplot ('myChart', [data, data2, data3], options);

最终,你的努力会得到图 11-6 中的多级饼图的回报。

A978-1-4302-6290-9_11_Fig6_HTML.jpg

图 11-6。

A multilevel pie chart

摘要

在本章中,您已经了解了 jqPlot 库如何允许您通过饼图(具有单个数据系列)或圆环图(具有多个数据系列)来表示数据,同时还可以快速了解一些主要属性以及如何在选项中设置它们。在本章的最后一部分,您创建了一个多级饼图:这是一个经典的例子,说明了如何通过适当地修改某些属性来生成一种不属于库所建议的标准图表的图表类型。

在下一章中,您将看到 jqPlot 库如何让您实现蜡烛图,以及如何处理特定的数据格式开盘-盘高-盘低-收盘(OHLC),这是这种图表的基础。


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
author-avatar
依然yang梓枫东_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有