45] 可被配置成实现图2的组件中的一个或多个组件的示例性设备包括图1的计算机 110。
[0046] 组件还可包括代码或可由代码来表示。代码包括指示计算机要采取的动作的指 令。代码还可包括除了计算机要采取的动作之外的信息,如数据、资源、变量、定义、关系、关 耳关等等。
[0047] 代码可由计算机执行。当代码由计算机执行时,运可被称为进程。在此使用的术 语"进程"及其变体可包括一个或多个传统的进程、线程、组件、库、执行任务的对象等等。进 程可W用硬件、软件、或硬件和软件的组合来实现。在一实施例中,无论如何命名,进程是能 够执行或者用于执行动作的任何机制。进程可分布在多个设备或单个设备上。代码可在用 户模式、内核模式、某一其他模式、上述模式的组合等中执行。
[004引图2例示出一些示例性组件,包括图表(化art)、绘图(Plot)、绘图部件 (Plo1:Pa;rt)、数据管理器值ataMgr)、绘图着色器(PlotShader)、属性集(AttributeSet)、 绘图服务器(PlotServer)、变化管理器烟langeMgr)、主题管理器CrhemeMgr)、几何库 (GeometryLibrary)、统计库(StatLibrary)、曲线拟合库(QirveFittingLibrary)、W 及数据变换库值曰13化曰113化1'111曰1:;[0]11^比'曰巧),^及运些组件中许多组件的子组件。
[0049] 化art205可包括1至N个图表小面(facet)。图表小面包括图表框架 (化art化ame)和1至N个绘图(1-NPlots)。一小面内的绘图层叠在彼此之上。化art化ame 可包括例如图表的轴、标题、图例、W及网格线。
[0050]UI状态管理器扣IStateMgr)负责维护每个形状的交互状态。交互状态可包括 例如悬停化over)、选择(selection)、过滤(filter)等。UIStateMgr可包括变化代理 (QiangeAgent)和选择器(Selector)。
[0051] 化angeAgent负责与不同图表共享交互状态。Selector便于通过边界(如橡皮筋 型边界或其他边界(如圆、正方形、矩形等))来选择形状。选择形状也可通过各种其他交 互来进行,包括经自然用户接口(如先前所述)的鼠标、触摸、姿势等。
[0052]Plot210是包括1至N个绘图部件(1-NPlo巧arts)和1至M个数据管理器(1-M DataMgrs)的数据驱动的绘制组件。绘图的示例包括柱状图、折线图、箱线图等。
[0053]Plo巧art215(有时也称为批上下文)是Plot的逻辑部件。Plo巧art215可 用单个形状类型及其自己的上下文来被绘制。例如,用于箱线图中的一复杂形状可使 用W下四个部件来被绘制:垂直线、框、水平线、W及离群点。Plo巧art215可包括容器 (Container)、1 至n个绘图着色器(1-nPlotShaders)、去往属性集(ToAttributeSet), W及可包括来自属性集(化omAttributeSet)。对于单帖绘制,来自属性集可被省略。当 为动画绘制多帖时,来自属性集和去往属性集都可被提供来执行动画。
[0054]Container220 (有时称为批画布)可包括CPU绘制(CPUDraw)组件,且还可包 括GPU绘制(GPUDraw)组件。在Container220被主控在具有中央处理单元的计算机上 时,CPUDraw组件可用。当主控设备还包括图形处理单元时(例如许多图形卡上发现的), Container220 还可包括GPUDraw组件。Container220 可使用CPUDraw组件和 / 或GPUDraw 组件,运取决于主控设备上什么可用W及正被绘制的形状。
[005引DataMgr225管理当前数据集的排序和过滤。除了维持原始格式(如JSON)之外,DataMgr225可使用NVF格式(下文中更详细描述)来内部地表示数据。
[0056] Plotaiader230在绘制部件或绘图时添加绘制功能。例如,PlotShader可包括线 着色器、条形图着色器、UI状态着色器、小面着色器等。Plot化ader230还可包括执行默认 的着色功能的默认绘图着色器。PlotShader230可生成常量W及发出执行各种计算的代码 (有时也称为属性缩放代码(attributescalingcode))。代码发出器将PlotSiader230 生成的代码转换成适合于CPU或GPU的形式,运取决于可用的硬件W及其他条件。着色器 可被高速缓存并被重用。
[0057] AttributeSet235包括标准属性和自定义属性。一些示例性标准属性包 括:x、y、Z、大小、宽度、高度、颜色、笔画、不透明度、分组、UI状态(uiState)、图像索引 (imageindex)、小面等。一些自定义属性可包括,例如:随机X(randomX)、随机Y(randomY)、 条索引化arindex)、图像索引(imageindex)等。自定义属性可由调用程序或绘图着色器来 创建。自定义属性可包括着色器需要的用来帮助计算其他属性的值的数据。该数据可通过 自定义属性而被传递给着色器。
[0058] PlotServer240可运行在服务器上W及提供像读取文件、排序、设及服务器代码 的自定义布局等的服务。PlotServer240还可管理机器到机器变化通知。
[0059] 虽然此处有时使用术语"客户机"和"服务器",但应当理解,客户机可在具有通常 与服务器相关联的硬件和/或软件的机器上实现,同样,服务器可在具有通常与台式、个人 或移动计算机相关联的硬件和/或软件的机器上实现。此外,客户机有时候可W用作服务 器,反之亦然。有时候,更频繁地用作客户机或服务器的两个或更多个实体可并发地成为对 等体、服务器或客户机。在一实施例中,客户机和服务器可在同一个物理机器上实现。
[0060] 此外,如此处所使用的,术语"服务器"和"客户机"中的每个可W指一个或多个物 理或虚拟实体、在一个或多个物理或虚拟实体上执行的一个或多个进程等。因此,服务器 可包括一个或多个进程在其上执行的实际物理节点、一个或多个进程在其上执行的虚拟节 点、在一个或多个节点上执行的服务、共同提供服务的一组节点等。服务可包括在一个或多 个物理或虚拟实体上执行的一个或多个进程。此外,单个进程可实现一个或多个服务器。
[0061] 化angeMgr245可在将图表擅染到输出设备的客户机上执行,W及可管理向订户 通知对图表的改变。
[0062] 化emeMgr250管理在不同主题之间进行改变。主题定义了Plo^artXharthame 等的外观。主题可包括颜色、线宽、字体、其他特征等。
[0063] 几何库255包括形状类型的几何图形。当被请求形状类型时,几何库255可提供 定义该形状的路径的数据(如串)。
[0064] 统计库260用于分箱W及其他统计功能。统计库260在被给予一数据集时可执行 分箱或按所请求的那样执行某种其他统计功能。
[0065] 曲线拟合库265提供用于拟合曲线的功能。为了使用曲线拟合库265,数据集与要 拟合的曲线的阶数(线性、二阶、=阶、或某一其他阶)的指示一起被传递。
[0066] 数据变换库270提供用于变换数据的功能。例如,数据变换库270可将数据从宽 格式变换成长格式。例如,销售数据可用具有4个或更多列的宽格式来表示:年(year)、利 润(profit)、销售额(sales)、W及奖金化onus)。该相同数据可用具有3个值的长格式来 表示:年、实例、化及值。例如,宽销售格式的年:1984、利润:500、销售额:300、奖金:100可 用长格式表示为:
[0067] 年:1984、实例:利润、值:500 [006引年:1984、实例:销售额、值:300
[0069] 年:1984、实例:奖金、值:100。
[0070] 数据变换库270还可执行数据平滑,其中它进行某种类型的平均或其他平滑功 能。数据变换库270还可执行分组和/或其他聚集功能,W及排序变换、过滤、或其他数据 库查询变换。
[0071] 为了绘制一组形状(如某一部件),可指定W下:
[0072] 1.形状脚ape)类型;
[007引 2.属性(Attribute)设置
[0074] 3.数据集值ataSet) 及
[00巧]4. 一组一个或多个绘图着色器。
[0076] 属性设置可与常数值和列名称映射一样简单,但还可包括缩放(scaling)方法W 及自定义比例(scales)。例如,可使用下列来绘制一组形状:SHAPETYPE=SQUARE,X= SALES,Y=PRO門T,COLOR=BLUE,OPACITY= . 6,SIZE= 25,DATA沈T=SalesT油Ie(形 状类型=正方形、X=销售额、Y=利润、颜色=蓝色、不透明度=0.6、大小=25、数据集= SalesT油Ie(销售额表))。
[0077] 绘制可使用批上下文或通过直接调用批绘制引擎来完成。对于多小面的图表,可 通过将"小面"属性设置为定义记录如何被分箱到每个小面的列,某一部件的所有小面可用 单个绘制调用来绘制。
[0078] 数据集是记录的逻辑集合,每个记录包含1至N个命名的列值。绘制引擎可W接 受具有各种格式的输入数据集。数据集可用特定形式被内部地存储,用于在访问和映射数 据时获得高性能。
[007引 JSON是一种用于表示数据的命名结构的JAVASCRfPT愈格式。JSON是示例性的 格式,且被用于说明性的目的。尽管在此有时使用JS0N,但是并不意图将数据表示限制为JSON格式。实际上,基于本文教导,本领域技术人员将认识到可表示数据的许多其他格式, 而不背离本文所述的主题的各方面的精神或范围。
[0080] 示例性的数据集可用JSON被定义如下:
[0081] varSalesT油Ie=
[0082] [
[0083] {city(城市):"LosAngeles(洛杉机)",sales: 34000,profit: 12300,bonuses (奖金):3000,year:2001},
[0084] {city:"NewYork(纽约)",sales: 16500,profit: 0,bonuses: 0,year: 2002},
[0085] {city:"Seattle(西雅图)",sales:21000,p;rofit:5200,bonuses:500,yea;r:2003},
[0086] {city:"Phoenix(菲尼克斯)",sales: 15000,profit:-3800,bonuses:0,year: 2004},
[0087] {city:"Boston(波:t顿)",sales:33700,profit:2500,bonuses: 100,year:200引,
[0088] {city:"Tampa(坦帕)",sales: 5500,profit: 1250,bonuses: 0,year: 2006},
[0089] (city:"Orlando(奥兰多)",sales:31000,profit: 18000,bonuses:4000,year:2007},
[0090] (ci1:y:"SanDiego(圣地亚哥)",sales:42500,pro円t:22000,bonuses:4200,year:200到,
[0091] ];
[0092] NFV格式是命名向量格式(NamedVector化rmat)的缩写。在一个实现中,NVF格 式是批绘制引擎所使用的数据集的内部格式。在该格式中,数据集列值被表示为化OAT(浮 点)或INT(整型)值的向量,带有该列的预先计算的MIN/MX(最小/最大)值(或MIN/ RANGE(最小/范围)值)。使用值索引方案,非数值值被转换成数值。记录与非数值值之 间的双向索引可被维持来增强后续数据变换的性能。该格式使得能够对任一列进行快速数 据访问,且带有缩放数据而不必对数据进行后续遍历W收集最小/最大值的能力。
[0093] 形状类型是批绘制引擎所支持的原语绘制类型之一。预定义的形状类型包括例 如:square(正方形)、rectangle(矩形)、line(线)、imageSiape(图像形状)、image(图 像)W及text(文本)。
[0094] 批上下文管理某一部件的绘制和动画。批上下文是批绘制引擎之上的抽象,并被 用于实现预定义的或自定义的绘图。
[0095] 批绘制引擎是用一公共形状类型绘制一组形状的形状绘制引擎。它具有两个用 于绘制的主方法:"CPU绘制"和"GPU绘制"。GPU代表图形处理单元,并在可用时用于更快 速地绘制。当GPU不可用时,备用的是"CPU绘制"。在一个实施例中,批绘制引擎使用用 于"GPU绘制"的HTMLSCanvas3D(画布3D)上下文(Web化),W及使用用于"CPU绘制"的 Canvas2D(画布2D)来绘制形状。
[0096] 属性是用于绘制形状类型的逻辑值。每个形状类型定义了它用来绘制其形状的 属性的集合。此外,自定义属性可被定义来将额外的数据带入着色器用于与其他属性的计 算。某些示例性属性包括:X、Y、COLOR(颜色)、OPAcnY(不透明度)、W及SIZE(大小)。 属性可被设为恒定值(如Color=Blue(颜色=蓝色)),或被映射到数据列(如Color= Sales(颜色=销售额))。此外,在形状被绘制时,大多数属性可被动画化(如Color:化om =Blue,to=Sales(颜色:来自=蓝色、去往=销售额))。
[0097] 着色器是由批绘制引擎生成的在CPU或GPU上运行的形状绘制代码。可对每个属 性的特定的恒定的、映射W及动画值,W及对所使用的ShapeType(形状类型)来优化所生 成的代码。
[0098] 对于属性值计算,批绘制引擎调用每个绘图着色器来发出代码W计算或调整一个 或多个属性的值。
[0099] 绘图着色器能从多个标准缩放功能(standardscaling化nction)中选择,或发 出自定义计算。
[0100] 图3 -般地表示根据本文所述的主题的各方面的一些示例性数据结构、示例性枚 举、W及示例性接口。在TypeScript(类型脚本)中,实现示例性数据结构的一个示例性方 式如下:
[0101] e邱ort enum UiState(UI状态)
[0102] {
[0103] normal, //0未选择的