热门标签 | 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),这是这种图表的基础。


推荐阅读
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 在Oracle数据库中,使用Dbms_Output.Put_Line进行输出调试时,若单行字符超过255个,则会遇到ORA-20000错误。本文介绍了一种有效的方法来处理这种情况,通过创建自定义包和视图,实现对长字符串的分割和正确输出。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 探讨在 Vue 框架中遇到的数据更新延迟或失败的问题,并提供解决方案。 ... [详细]
  • 使用Bootstrap创建响应式渐变固定头部导航栏的方法
    本文详细介绍了如何利用Bootstrap框架构建一个具有渐变效果的固定顶部响应式导航栏,包括HTML结构、CSS样式以及JavaScript交互的完整实现过程。适合前端开发者和学习者参考。 ... [详细]
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 基于JQuery实现的评分插件
    本文介绍了一个使用JQuery创建的交互式评分控件。当用户将鼠标悬停在星星上时,左侧的星星会变为实心,右侧保持空心,并显示对应的评分等级;移开鼠标后,所有星星恢复为空心状态。 ... [详细]
  • 在本教程中,我们将深入探讨如何使用 Python 构建游戏的主程序模块。通过逐步实现各个关键组件,最终完成一个功能完善的游戏界面。 ... [详细]
  • 本文介绍如何使用.NET Framework开发一个简单的Windows Forms应用程序,以实现图形在窗口内的动态移动。文章详细描述了代码结构、关键逻辑以及最终的实现效果。 ... [详细]
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社区 版权所有