2 如何做饼图

饼图也许是现代图形中最普遍的图形。 它已经被统计学家指责(不合理地),并被管理者(不合理地)推崇。 从某种意义上说,它可能是最具体的图表。 五岁的孩子可以看一眼,可以很好地判断比例。 (为防止偏见,请给孩子这把刀和其他人作为切片的首选。)如今,馅饼非常流行,图形操作系统包括用于绘制馅饼切片的基本功能。

图2.1显示了如何制作饼图的简单数据流模型。 数据值从一个名为Source的数据存储区通过一个制作图形的Make-a-pie流程流动,然后将其发送到一个名为Renderer的角色。 此处忽略渲染器的详细信息。 它可以呈现为多种图形格式中的任何一种,也可以呈现图形的文本描述,甚至呈现超音波。

图2.1 如何制作饼图

Foley等(1993年)讨论图形流水线,和Upson等(1989年)讨论了如何在科学可视化中使用管道架构。 该管道可以(并且已经)作为单个函数编写。 没有什么比这更简单了。 但是,简单的事情通常值得深入研究。 传入的数据格式是什么? 楔形饼如何着色? 我们应该使用哪些变量来标记饼图? 我们是否要按子组创建饼图表? 一旦我们有了一个饼图函数,该函数具有解决这些问题的选项,那么我们就必须考虑条形图,散点图,帕累托图,等等。 每种图表类型都必须回答这些问题,甚至更多。

图形语法的开发考虑了所有这些问题,目的是产生一个灵活的系统,该系统可以尽可能简单地创建各种图表,而无需重复方法。 它也是可扩展的,这意味着可以轻松添加流程以创建新的图表。

尽管饼图的外观很简单,但制作饼图几乎可以调用语法的每个方面。 图2.2显示了在此系统下如何构造图表的数据流程图。 图2.2只是对图2.1的改进。 制作饼图的内部过程会更详细地显示。 这些内部过程构成了图形语法的语法。

图2.2 从数据到图形

在每个步骤中混合并匹配可用的流程,以最小的努力即可创建各种各样的图表。 有些图表会像饼图一样简单。 其他的则更加复杂,例如拿破仑进军莫斯科的地图和第20章中相关的温度图形。如果我们学习如何制作馅饼,我们几乎可以创建任何统计图形。 我们将首先介绍制作图形的一般方法,然后逐步进行制作馅饼的过程,偶尔会暂停定义。

图2.2只是系统设计的一部分。 作为数据流程图,它仅显示阶段是什么,如何订购它们以及在此过程中需要什么数据。 它很少说明系统的实际实施情况。 例如,可以将其实现为:

  • 过程库,其中各个过程是在每个图表的主程序循环中组装的过程。
  • 一个功能程序,其中每个过程都是一个功能,然后计算并执行实际的图形功能。
  • 面向对象的程序,其中每个进程都是具有自己的数据和行为的对象。
  • 应用程序通过其推送数据的图形模型中的路径。
  • 图形模型中的路径,渲染器通过该路径提取数据。

重要的是要记住,图2.2只是生成图形的系统架构的一部分。 正如Booch(1994)所指出的那样,面向对象的系统可以由一系列“正交”的对象图表示,每个对象图都提供了系统的不同功能视图。 图2.2为我们提供了成分以及它们之间的依赖关系,但没有告诉我们如何组装成分。

但是,这本书的一个前提是我们不能更改管道中各阶段的顺序。 例如,进行统计后就无法计算比例。 而且,显然,在计算可以着色和纹理化的几何对象之前,我们无法应用美学。 从某种意义上说,数据流模型是一种事实。 必须先处理数据,然后才能进行绘制。 许多人已经使用某种类型的数据流来说明可视化系统如何工作。 很少有人确定这些系统必须遵循的必要子序列。

在本书的第一版中,本章介绍了如何制作一个饼图。 这次我们要做成两个饼图。 通过两个示例,可以更完整地说明图形代数和管道的其他组件。 但是,在制作饼图之前,我们将提供一些术语的基本定义,以便我们组装配料。

你可能感兴趣的:(2 如何做饼图)