亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

圖表上的自動標(biāo)簽放置系統(tǒng)和方法

文檔序號:6633893閱讀:189來源:國知局
專利名稱:圖表上的自動標(biāo)簽放置系統(tǒng)和方法
相關(guān)申請的參照本專利申請涉及2004年9月15日提交的,名為“Common Charting UsingShapes(使用形狀的公用制圖)”的專利申請第10/941,566。該相關(guān)申請被轉(zhuǎn)讓被本專利申請的受讓人,并通過引用結(jié)合于此。
背景技術(shù)
圖表是數(shù)字?jǐn)?shù)據(jù)的圖形表示。圖表對于以簡明且易于理解的形式呈現(xiàn)復(fù)雜數(shù)據(jù)而言尤其有用。在當(dāng)今的桌面發(fā)行環(huán)境中,用戶可使用圖表創(chuàng)建令人印象深刻的演示。圖表基于輸入到諸如來自美國華盛頓州雷蒙德市的微軟公司的“EXCEL”等應(yīng)用程序的底層數(shù)據(jù)。底層數(shù)據(jù)然后可用于以多種不同的格式創(chuàng)建數(shù)據(jù)圖表,如餅形圖、條形圖、直方圖、折線圖等等。另外,圖表的每一部分可具有相關(guān)聯(lián)的顏色、紋理和其它效果,以改進(jìn)圖表的外觀,這對于傳達(dá)信息而言是十分重要的。
圖表中包括的標(biāo)簽有助于圖表的視覺功能和演示。如果用戶激活自動化數(shù)據(jù)標(biāo)簽功能,則具有較多數(shù)據(jù)點的圖表將變得難以閱讀。一般而言,先前提供的自動化圖表加標(biāo)簽算法導(dǎo)致重疊的文本和未被優(yōu)化以使用圖表區(qū)域的標(biāo)簽定位。因此,需要替換的方法。

發(fā)明內(nèi)容
本發(fā)明的實施例涉及通過優(yōu)化圖表和圖上的標(biāo)簽的放置解決了上述限制的系統(tǒng)和方法。標(biāo)簽的優(yōu)化是依照基于一組約束對標(biāo)簽的指定定位進(jìn)行評分的算法來提供的。標(biāo)簽的當(dāng)前定位越符合規(guī)定的約束,該圖表的得分就越高。該算法視圖通過多次調(diào)用一個函數(shù)來最小化得分,該函數(shù)在每次被調(diào)用時重新定位單個標(biāo)簽。在本發(fā)明的一個實現(xiàn)中,手動地定位的標(biāo)簽在優(yōu)化過程中不被考慮。
在本發(fā)明的一個方面,依照在圖表或圖的標(biāo)簽或錨點(anchor)上操作的目標(biāo)函數(shù)或評分函數(shù)以及擾動函數(shù)來定義優(yōu)化過程的函數(shù)。錨點指的是具有相關(guān)聯(lián)的標(biāo)簽的圖表的顯示元素,如餅形圖的特定的一片、泡式圖的一個泡或其它元素,取決于所使用的圖表。目標(biāo)函數(shù)指的是定義可用于對圖表評分的優(yōu)化目標(biāo)的函數(shù)。例如,目標(biāo)函數(shù)可以對應(yīng)于最小化標(biāo)簽的重疊、最小化自錨點的邊緣的距離、優(yōu)化標(biāo)簽位置的其它目標(biāo)、以及這些目標(biāo)的可能組合。擾動函數(shù)指的是定義圖表上標(biāo)簽的調(diào)整的限制的函數(shù)。例如,擾動函數(shù)可定義用于重定位標(biāo)簽的范圍限制、可以對于標(biāo)簽所作出的改變類型的有限子集、以及其它限制。


圖1示出了可在本發(fā)明的一個示例性實施例中使用的示例性計算設(shè)備。
圖2依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的餅形圖的示例性視圖。
圖3依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的泡式圖的示例性視圖。
圖4依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的時間線圖的示例性圖示。
圖5依照本發(fā)明示出了用于實現(xiàn)生成圖表和優(yōu)化標(biāo)簽位置的示例性制圖系統(tǒng)500。
圖6依照本發(fā)明示出了用于確定對應(yīng)于標(biāo)簽的最優(yōu)布局的可視數(shù)據(jù)對象布局的示例性偽代碼。
具體實施例方式
現(xiàn)在將參考附圖更完整地描述本發(fā)明,附圖形成了本發(fā)明的一部分,并作為說明示出了用于實施本發(fā)明的具體示例性實施例。然而,本發(fā)明可以用許多不同的形式來實施,且不應(yīng)當(dāng)被解釋為限于此處所陳述的實施例;相反,提供這些實施例使得本公開內(nèi)容能夠徹底和完成,并且將向本領(lǐng)域的技術(shù)人員完全傳達(dá)本發(fā)明的范圍。本發(fā)明可被實施為方法或設(shè)備等等。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例或組合軟件和硬件方面的實施例的形式。因此,以下詳細(xì)描述不應(yīng)當(dāng)在限制的意義上考慮。
說明性操作環(huán)境參考圖1,用于實現(xiàn)本發(fā)明的一個示例性系統(tǒng)包括諸如計算設(shè)備100的計算設(shè)備。計算設(shè)備100可被配置成客戶機(jī)、服務(wù)器、移動設(shè)備或任一其它計算設(shè)備。在最基本的配置中,計算設(shè)備100通常包括至少一個處理單元102和系統(tǒng)存儲器104。根據(jù)計算設(shè)備的確切配置和類型,系統(tǒng)存儲器104可以是易失性(如RAM)、非易失性(如ROM、閃存等)或兩者的某一組合。系統(tǒng)存儲器104通常包括操作系統(tǒng)105、一個或多個應(yīng)用程序106,并且可包括程序數(shù)據(jù)107。在一個實施例中,應(yīng)用程序106包括用于實現(xiàn)本發(fā)明的功能的圖表標(biāo)簽優(yōu)化應(yīng)用程序120。這一基本配置在圖1中由虛線108內(nèi)的組件示出。
計算設(shè)備100可具有另外的特征或功能。例如,計算設(shè)備100也可包括另外的數(shù)據(jù)存儲設(shè)備(可移動和/或不可移動),如磁盤、光盤或磁帶。這類另外的存儲在圖1中由可移動存儲109和不可移動存儲110示出。計算機(jī)存儲介質(zhì)可包括以用于儲存如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法和技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器104、可移動存儲109和不可移動存儲110都是計算機(jī)存儲介質(zhì)的示例。計算機(jī)存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存期望的信息并可由計算設(shè)備100訪問的任一其它介質(zhì)。任一這類計算機(jī)存儲介質(zhì)可以是設(shè)備100的一部分。計算設(shè)備100也可具有(多個)輸入設(shè)備112,如鍵盤、鼠標(biāo)、輸入筆、語音輸入設(shè)備、觸摸輸入設(shè)備等等。也可包括(多個)輸出設(shè)備114,如顯示器、揚聲器、打印機(jī)等等。
計算設(shè)備100也包含允許設(shè)備如通過網(wǎng)絡(luò)與其它計算設(shè)備118進(jìn)行通信的通信連接116。通信連接116是通信介質(zhì)的一個示例。通信介質(zhì)通??梢杂芍T如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)具體化,并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進(jìn)行編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。本發(fā)明使用的術(shù)語計算機(jī)可讀介質(zhì)包括存儲介質(zhì)和通信介質(zhì)。
用于優(yōu)化自動標(biāo)簽放置的說明性實施例如此處所使用的,術(shù)語“圖表”和“可視數(shù)據(jù)對象”互換地使用,來描述各種可視對象,如餅形圖、泡式圖、折線圖、時間線、線圖、條形圖、照片、數(shù)字圖像以及可具有相關(guān)聯(lián)標(biāo)簽的其它對象。
本發(fā)明的實施例涉及使用一種算法來優(yōu)化圖表上標(biāo)簽的位置。本發(fā)明使用一些函數(shù)從一組可能的布局中搜索標(biāo)簽的最優(yōu)布局。為將布局問題構(gòu)成搜索,本發(fā)明定義了一初始布局和兩個函數(shù)基于評估標(biāo)準(zhǔn)評定布局質(zhì)量的目標(biāo)函數(shù),以及操縱給定布局以產(chǎn)生搜索空間內(nèi)的新布局的擾動函數(shù)。評分和擾動函數(shù)都由布局上的一組約束來定義。給定這兩個函數(shù),可執(zhí)行搜索來確定最優(yōu)布局。在一個實施例中,使用了一種模擬退火方法,作為用于確定最優(yōu)布局的隨機(jī)化搜索算法。
約束可被劃分成兩組硬約束和軟約束。硬約束由任一可接受布局所要求的特征構(gòu)成,并且因此硬約束界定了可能布局的空間。相反,軟約束由最終布局所期望但并不要求的特征構(gòu)成。硬約束通常通過擾動函數(shù)來施加,該擾動函數(shù)被設(shè)計成僅生成滿足硬約束的布局。評分函數(shù)核查給定布局滿足軟約束的程度。
使用該算法,可使用一組數(shù)據(jù)來填充具有標(biāo)簽的圖表,同時優(yōu)化圖表區(qū)域中標(biāo)簽的位置。
圖2依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的餅形圖的示例性視圖。
視圖210示出了餅形圖上的標(biāo)簽由于餅形圖中包括的數(shù)據(jù)點的數(shù)目而重疊。重疊的文本使得難以從視覺上辨別所有的標(biāo)簽以及它們與餅形圖元素的關(guān)聯(lián)。
視圖220通過運行本發(fā)明的優(yōu)化算法得到了具有改進(jìn)加標(biāo)簽的餅形圖。該餅形圖的可讀性通過優(yōu)化圖表空間內(nèi)的標(biāo)簽的位置而得到很大的改進(jìn)。該算法將某些標(biāo)簽從它們所相關(guān)的錨點(片)移開,而其它標(biāo)簽被移至離其錨點更近,或甚至在錨點內(nèi)居中或部分居中。其它標(biāo)簽添加了引導(dǎo)線以將標(biāo)簽視覺上與其相關(guān)聯(lián)的錨點鏈接。視圖220示出該算法使用提供圖表標(biāo)簽的最優(yōu)布局的各種方法。
圖3依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的泡式圖的示例性視圖。
視圖310示出可以定位泡式圖上的標(biāo)簽使得確定其相關(guān)錨點可能是不可能的。此外,由于與泡邊緣重疊的文本,標(biāo)簽的文本可能不是圖表內(nèi)的泡的最優(yōu)視圖的位置。
視圖320是通過運行本發(fā)明的最優(yōu)算法具有改進(jìn)加標(biāo)簽的泡式圖。該泡式圖的可讀性通過優(yōu)化圖表空間內(nèi)的標(biāo)簽位置而得到很大的改進(jìn)。該算法將某些標(biāo)簽從它們所相關(guān)的錨點(泡)移開,而其它標(biāo)簽被移至離其錨點更近,甚至在錨點內(nèi)居中或部分居中。其它標(biāo)簽添加了引導(dǎo)線,以將標(biāo)簽在視覺上與其相關(guān)聯(lián)的錨點鏈接,同時將標(biāo)簽移至離其相關(guān)聯(lián)的錨點有一距離。視圖320示出了該算法使用了類似于對餅形圖所采用的各種方法所提供泡式圖標(biāo)簽的最優(yōu)布局的各種方法。
圖4依照本發(fā)明示出了在標(biāo)簽位置優(yōu)化之前和之后具有自動加標(biāo)簽的時間線圖的示例性視圖。
視圖410示出時間線圖上的標(biāo)簽由于包括在所提供的空間內(nèi)的數(shù)據(jù)點的數(shù)目而重疊。此外,沒有得益于本發(fā)明的自動化加標(biāo)簽算法不夠智能來將文本空間與時間線上的數(shù)據(jù)點區(qū)分開來。
視圖420是通過運行本發(fā)明的優(yōu)化算法具有改進(jìn)的加標(biāo)簽的時間線圖。該時間線的可讀性通過優(yōu)化圖表空間內(nèi)標(biāo)簽的位置而得到很大的改進(jìn)。該算法改變了文本格式,并遍及圖表空間移動了標(biāo)簽以優(yōu)化圖表空間的使用。視圖420示出該算法使用了類似于對上文提供的餅形圖和泡式圖示例所采用的各種方法的提供時間線圖標(biāo)簽的最優(yōu)布局的各種方法。
依照本發(fā)明,也可提供除圖2-4中示出的實施例之外的實施例。例如,本發(fā)明可用于優(yōu)化線圖上、照片內(nèi)或結(jié)合其它可視數(shù)據(jù)對象的標(biāo)簽的位置。
圖5依照本發(fā)明示出了用于實現(xiàn)生成圖表和優(yōu)化標(biāo)簽位置的示例性制圖系統(tǒng)500。包括在系統(tǒng)500中的是提供對文檔504的訪問的應(yīng)用程序502以及用于在計算機(jī)監(jiān)視器屏幕508上呈現(xiàn)文檔504的圖形模塊506。
如此處所使用的,文檔504是包括諸如文本和圖形等用戶可讀信息的計算機(jī)可讀文件。文檔504可以由用戶通過應(yīng)用程序502的用戶界面來查看和編輯。文檔的示例性類型可包括但不限于,電子表格、演示或常規(guī)的文本文檔。由此,取決于文檔的類型,應(yīng)用程序502可以是,例如,但不限于,微軟的“WORD”、“POWERPOINT”、“EXCEL”或其它應(yīng)用程序。作為示例,如屏幕508上所示,文檔504是“演示”,它通常(但不總是)與“POWERPOINT”相關(guān)聯(lián)。
尤其與本描述相關(guān)的是演示中的圖表5i0。圖5的特定實現(xiàn)中所示的圖表510是列圖表。依照其它實施例,圖表510不限于列圖表,而可以是任何其它類型的圖表,諸如但不限于,餅形圖、折線圖、散布圖、照片或其它可視數(shù)據(jù)對象。圖表510中的各種數(shù)據(jù)最初由文檔504指定。文檔504用稱為圖表對象512的圖表定義來指定圖表510。
圖表對象512按照圖表元素定義了圖表510。一般而言,圖表元素是表示圖表的一方面的數(shù)據(jù)單元。通常,圖表元素表示圖表中與圖表所傳達(dá)的信息或圖表類型有關(guān)的一方面。示例性圖表元素包括條(例如,對于條形圖)、圖表軸、圖表圖例、圖表標(biāo)題、圖表標(biāo)簽、元素顏色、文本字體、元素位置、數(shù)據(jù)源等等。圖表元素可以被稱為與標(biāo)簽有關(guān)的錨點。圖表對象512的一個實現(xiàn)是一組可擴(kuò)展標(biāo)記語言(XML)。為了說明,下文示出了圖表對象512的示例XML-<c:Chart xmlns:c="chart"xmlns:s="shape">
-<c:Scaling>
<c:ScaleID>0</c:ScaleID>
<c:Orientation>MinMax</c:Orientation>
</c:Scaling>
-<c:Scaling>
<c:ScaleID>1</c:ScaleID>
<c:Orientation>MinMax</c:Orientation>
</c:Scaling>
<c:Name>Chart1</c:Name>
-<c:PlotArea>
<c:Shape/>
-<c:Graph>
<c:Type>Column</c:Type>
<c:SubType>Clustered</c:SubType>
<c:Overlap>0</c:Overlap>
<c:ScaleID>0</c:ScaleID>
<c:ScaleID>1</c:ScaleID>
-<c:Series>
<c:Index>0</c:Index>
<c:Name>Series1</c:Name>
-<c:Shape>
-<s:Fill>
-<s:Pattern>
<s:Title>Wide upward diagonal</s:Title>
<s:Color>black</s:Color>
<s:Color2>white</s:Color2>
</s:Pattern>
</s:Fill>
-<s:Border>
<s:Weight>0</s:Weight>
<s:Solid>black</s:Solid>
</s:Border>
</c:Shape>
-<c:DataLabels>
-<c:Shape>
-<s:Font>
<s:FontName>Arial</s:FontName>
<s:Size>18</s:Size>
<s:AutoScale/>
</s:Font>
</c:Shape>
-<c:Number>
<c:FormatString>0.0</c:FormatString>
</c:Number>
<c:ShowValue/>
</c:DataLabels>
-<c:Category>
<c:DataSource>0</c:DataSource>
<c:Data>Sheet1!$A$1:$A$3</c:Data>
</c:Category>-<c:Value>
<c:DataSource>0</c:DataSource>
<c:Data>Sheet1!$B$1:$B$3</c:Data>
</c:Value>
</c:Series>
<c:PlotVisible/>
</c:Graph>-<c:Axis>
<c:Placement>Bottom</c:Placement>
<c:AxisID>0</c:AxisID>
<c:ScaleID>0</c:ScaleID>
<c:CrossingAxis>1</c:CrossingAxis>
-<c:Shape>
-<s:Font>
<s:FontName>Arial</s:FontName>
<s:Size>18</s:Size>
<s:AutoScale/>
</s:Font>
</c:Shape>
-<c:Number>
<c:SourceLinked/>
<c:BuiltInFormat>0</c:BuiltInFormat>
</c:Number>
<c:MajorTick>None</c:MajorTick>
<c:TickMarkSkip>1</c:TickMarkSkip>
<c:Type>Automatic</c:Type>
</c:Axis>
-<c:Axis>
<c:Placement>Left</c:Placement>
<c:AxisID>1</c:AxisID>
<c:ScaleID>1</c:ScaleID>
<c:CrossingAxis>0</c:CrossingAxis>
<c:CrossesAt>Minimum</c:CrossesAt>
<c:CrossBetween>Between</c:CrossBetween>
-<c:Shape>
-<s:Font>
<s:FontName>Arial</s:FontName>
<s:Size>18</s:Size>
<s:AutoScale/>
</s:Font>
</c:Shape>
-<c:Number>
<c:SourceLinked />
<c:BuiltInFormat>0</c:BuiltInFormat>
</c:Number>
<c:MajorTick>Cross</c:MajorTick>
<c:MinorTick>Cross</c:MinorTick>
<c:Type>Value</c:Type>
<c:MajorUnit>5</c:MajorUnit>
</c:Axis></c:PlotArea></c:Chart>
文檔504通常也具有其它文檔數(shù)據(jù)514,包括但不限于文本和格式化信息。依照一個實現(xiàn),當(dāng)啟動應(yīng)用程序502且打開文檔504時,將圖表對象512傳遞到圖形模塊506的圖形接口516用于呈現(xiàn)。
圖形接口516確定圖表對象512表示什么類型的圖形??捎蓤D形接口516處理的圖形的類型包括但不限于,圖示、圖表或任意形狀。圖表對象512包括指示它定義圖表的標(biāo)識符?;趫D表標(biāo)識符,圖形接口516確定圖表對象512定義了圖表,并將其發(fā)送到制圖模塊518。
制圖模塊518包括轉(zhuǎn)換引擎520,它將圖表對象512轉(zhuǎn)換成圖形模塊506用于將圖表510呈現(xiàn)到屏幕508的形式。具體地,轉(zhuǎn)換引擎520將圖表對象512轉(zhuǎn)換成基于形狀的圖表定義522。如其名字所暗示的,基于形狀的圖表定義522按照圖形而非圖表元素來定義圖表。使用形狀能夠通過允許與圖形交互的機(jī)制改進(jìn)了圖表呈現(xiàn)過程、圖表外觀以及圖表操縱。
在轉(zhuǎn)換過程中,轉(zhuǎn)換引擎520執(zhí)行若干操作。例如,轉(zhuǎn)換引擎520從圖表對象512中引用的數(shù)據(jù)源檢索構(gòu)成圖表510的數(shù)據(jù)(例如,數(shù)字?jǐn)?shù)據(jù))。數(shù)據(jù)源可以是文檔504本身,或某一其它來源,諸如但不限于,另一文檔、數(shù)據(jù)庫、文件、因特網(wǎng)或隊列。除數(shù)據(jù)之外,轉(zhuǎn)換引擎520可檢索描述如何格式化數(shù)據(jù)的數(shù)字格式化信息。數(shù)字格式化信息包括但不限于,貨幣符號、小數(shù)位數(shù)、百分比或分?jǐn)?shù)格式、或日期和時間格式。
轉(zhuǎn)換引擎520也將圖表元素轉(zhuǎn)換成形狀,如線、矩形、圓形、三角形等等。形狀是簡單地表示圖表元素的可視外觀的數(shù)據(jù)單元,且不依靠或依賴于底層數(shù)字圖表數(shù)據(jù)。由此,例如,圖表對象512中的條將被轉(zhuǎn)換成基于形狀的圖表定義522中的矩形;圖表軸將被轉(zhuǎn)換成線,等等。
另外,轉(zhuǎn)換引擎520將選中的相關(guān)圖形組合,以便于由用戶操縱相關(guān)圖形。圖形接口516提供了允許用戶與相關(guān)形狀組交互的功能。轉(zhuǎn)換引擎520通過組合諸如但不限于相關(guān)數(shù)據(jù)標(biāo)簽和相關(guān)數(shù)據(jù)序列等相關(guān)圖表元素利用了那些功能。在檢索數(shù)據(jù)、將圖表元素轉(zhuǎn)換成形狀、并組合相關(guān)形狀之后,轉(zhuǎn)換引擎520生成基于圖形的圖表定義522。
基于形狀的圖表定義522的一個實現(xiàn)由XML代碼組成。為了說明,下文示出了一個示例性基于形狀的圖表定義522的XML代碼-<group>
<id>Chart</id>
-<shapes>
-<rect>
<id>ChartArea</id>
<style>margin-left:0;margin-top:9.75pt;width:501pt;height:319.5pt;z-index:1</style>
-<border>
<Solid>black</Solid>
<Weight>0</Weight>
</border>
</rect>
-<group>
<id>Series1</id>
<style>margin-left:88.5pt;margin-top:60pt;width:359.25pt;height:220.5pt;z-index:3</style>
<coordorigin>438,743</coordorigin>
<coordsize>479,294</coordsize>
-<Fill>
-<Pattern>
<Title>Wide upward diagonal</Title>
<Color>black</Color>
<Color2>white</Color2>
</Pattern>
</Fill>
-<border>
<Solid>black</Solid>
<Weight>0</Weight>
</border>
-<shapes>
-<rect>
<id>Point1</id>
<style>left:438;top:839;width:80;height:198</style>
</rect>
-<rect>
<id>Point2</id>
<style>left:638;top:743;width:80;height:294</style>
</rect>
-<rect>
<id>Point3</id>
<style>left:837;top:931;width:80;height:106</style>
</rect>
</shapes>
</group>
-<group>
<id>Y Axis</id>
-<border>
<Solid>black</Solid>
<Weight>0</Weight>
</border>
-<shapes>
-<line>
<id>Y Axis Line</id>
<style>z-index:4</style>
<from>45pt,32.25pt</from>
<to>45pt,280.5pt</to>
</line>
-<line>
<id>Y Axis Tick Mark1</id>
<style>z-index:5</style>
<from>40pt,281pt</from>
<to>48pt,281pt</to>
</line>
-<line>
<id>Y Axis Tick Mark2</id>
<style>z-index:6</style>
<from>40pt,256pt</from>
<to>48pt,256pt</to>
</line>
-<line>
<id>Y Axis Tick Mark3</id>
<style>z-index:7</style>
<from>40pt,231pt</from>
<to>48pt,231pt</to>
</line>
-<line>
<id>Y Axis Tick Mark4</id>
<style>z-index:8</style>
<from>40pt,207pt</from>
<to>48pt,207pt</to>
</line>
-<line>
<id>Y Axis Tick Mark5</id>
<style>z-index:9</style>
<from>40pt,182pt</from>
<to>48pt,182pt</to>
</line>
-<line>
<id>Y Axis Tick Mark6</id>
<style>z-index:10</style>
<from>40pt,157pt</from>
<to>48pt,157pt</to>
</line>
-<line>
<id>Y Axis Tick Mark7</id>
<style>z-index:11</style>
<from>40pt,132pt</from>
<to>48pt,132pt</to>
</line>
-<line>
<id>Y Axis Tick Mark8</id>
<style>z-index:12</style>
<from>40pt,108pt</from>
<to>48pt,108pt</to>
</line>
-<line>
<id>Y Axis Tick Mark9</id>
<style>z-index:13</style>
<from>40pt,83pt</from>
<to>48pt,83pt</to>
</line>
-<line>
<id>Y Axis Tick Mark 10</id>
<style>z-index:14</style>
<from>40pt,57pt</from>
<to>48pt,57pt</to>
</line>
-<line>
<id>Y Axis Tick Mark 11</id>
<style>z-index:15</style>
<from>40pt,33pt</from>
<to>48pt,33pt</to>
</line>
-<line>
<id>Y Axis Tick Mark 12</id>
<style>z-index:16</style>
<from>38.25pt,281pt</from>
<to>49.5pt,281pt</to>
</line>
-<line>
<id>Y Axis Tick Mark 13</id>
<style>z-index:17</style>
<from>38.25pt,157pt</from>
<to>49.5pt,157pt</to>
</line>
-<line>
<id>Y Axis Tick Mark 14</id>
<style>z-index:18</style>
<from>38.25pt,33pt</from>
<to>49.5pt,33pt</to>
</line>
</shapes>
</group>
-<line>
<id>X Axis</id>
<style>z-index:19</style>
<from>44.25pt,281pt</from>
<to>492.75pt,281pt</to>
-<border>
<Solid>black</Solid>
<Weight>0</Weight>
</border>
</line>
-<group>
<id>Series 1 DataLabels</id>
<style>margin-left;106.5pt;margin-top:33pt;width:324pt;height:164.25pt;z-index:106:20</style>
<coordorigin>462,707></coordorigin>
<coordsize>432,219</coordsize>
-<Font>
<FontName>Arial</FontName>
<Size>18</Size>
<AutoScale/>
</Font>
-<shapes>
-<rect>
<id>Series 1 DataLabel 1</id>
<style>left:462;top:803;width:33;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">6.0</div>
</textbox>
</rect>
-<rect>
<id>Series 1 DataLabel 2</id>
<style>left:661;top:707;width:33;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">8.9</div>
</textbox>
</rect>
-<rect>
<id>Series1 DataLabel 3</id>
<style>left:861;top:895;width:33;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">3.2</div>
</textbox>
</rect>
</shapes>
</group>
-<group>
<id>Y Axis Labels</id>
<style>margin-left:10.5pt;margin-top:22.5pt;width:19.5pt;height:271.5pt;z-index:21</style>
<coordorigin>334,693</coordorigin>
<coordsize>26,362</coordsize>
-<Font>
<FontName>Arial</FontName>
<Size>18</Size>
<AutoScale/>
</Font>
-<shapes>
-<rect>
<id>Y Axis Labels 0</id>
<style>left:347;top:1024;width:13;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">0</div>
</textbox>
</rect>
-<rect>
<id>Y Axis Labels 5</id>
<style>left:347;top:858;width:13;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">5</div>
</textbox>
</rect>
-<rect>
<id>Y Axis Labels 10</id>
<style>left:334;top:693;width:26;height:31;wrap-style:none;text-anchor:top</style>
stroked="f">
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">10</div>
</textbox>
</rect>
</shapes>
</group>
-<group>
<id>X Axis Labels</id>
<style>margin-left:112.5pt;margin-top:296.25pt;width:312pt;height:23.25pt;z-index:22</style>
<coordorigin>470,1058</coordorigin>
<coordsize>416,31</coordsize>
-<shapes>
-<rect>
<id>X Axis Labels Category 1</id>
<style>left:470;top:1058;width:15;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">A</div>
</textbox>
</rect>
-<rect>
<id>X Axis Labels Category 2</id>
<style>left:670;top:1058;width:16;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">B</div>
</textbox>
</rect>
-<rect>
<id>X Axis Labels Category 3</id>
<style>left:869;top:1058;width:17;height:31;wrap-style:none;text-anchor:top</style>
-<textbox style="fit-shape-to-text:t"inset="0,0,0,0">
<div style="text-align:left">C</div>
</textbox>
</rect>
</shapes>
</group>
</shapes>
</group>
圖形接口516接收基于形狀的圖表定義522,并在屏幕上508呈現(xiàn)圖表510作為由基于形狀的圖表定義指定的一組形狀。圖形接口516通常通過調(diào)用操作系統(tǒng)或顯示控制器功能來執(zhí)行呈現(xiàn)。例如,在WINDOWS操作系統(tǒng)中,圖形接口516可調(diào)用圖形顯示接口(GID+)。
如圖所示,圖形模塊506包括一組圖形服務(wù)524。圖形服務(wù)524包括可由應(yīng)用程序訪問來操縱圖表510的服務(wù)。圖形服務(wù)524提供了訪問該服務(wù)的一個或多個應(yīng)用編程接口(API)。
由于圖形模塊506呈現(xiàn)了多種形狀,因此圖形服務(wù)524能夠提供用于操縱圖表510的高級函數(shù)。圖形服務(wù)524能夠例如,在圖表內(nèi)的形狀上執(zhí)行矢量圖形函數(shù)。為了說明,矩形可通過調(diào)用圖形服務(wù)524移動形狀的單個函數(shù)來移動,而非通過調(diào)用多個低級函數(shù)在新位置中重新繪制該矩形來移動。另外,圖形模塊506對于多個應(yīng)用程序是公用的,使得形狀操縱/編輯和外觀在應(yīng)用程序之間是一致的。由此,圖形模塊506可呈現(xiàn)用于編輯圖表510中的形狀的圖形用戶界面,而不管應(yīng)用程序502的類型是什么。
標(biāo)簽優(yōu)化526是系統(tǒng)500內(nèi)針對本發(fā)明的代碼。標(biāo)簽優(yōu)化526接收基于形狀的圖表定義522,并依照優(yōu)化算法來優(yōu)化標(biāo)簽的位置。如先前所提到的,基于形狀的圖表定義522允許標(biāo)簽?zāi)軌虮蝗菀椎匾苿?,因為它們是按照其形狀而非要求重新繪制標(biāo)簽的其它低級函數(shù)來定義的。標(biāo)簽優(yōu)化526可以在屏幕508上呈現(xiàn)了圖表510之前或之后使用,來優(yōu)化標(biāo)簽的定位。例如,依照優(yōu)化算法的標(biāo)簽定位可以對于所呈現(xiàn)的每一圖表是自動的。相反,標(biāo)簽優(yōu)化可以依照用戶選擇來提供,其中,用戶肯定地選擇優(yōu)化標(biāo)簽。在一個實現(xiàn)中,由用戶手動定位的標(biāo)簽在優(yōu)化過程中被忽略。
術(shù)語模塊在一般意義上使用,以描述可用于執(zhí)行一個或多個期望功能的組件。模塊可以用各種方法和形式來實現(xiàn)。例如,模塊可以用硬件、軟件、固件或硬件、軟件和/或固件的各種組合來實現(xiàn),取決于諸如速度、成本、大小等因素。例如,但非限制,在一個實現(xiàn)中,系統(tǒng)100中的每一模塊包括儲存在計算機(jī)可讀介質(zhì)上并在諸如上文參考圖1所描述的計算系統(tǒng)等計算系統(tǒng)上執(zhí)行的軟件,如動態(tài)鏈接庫(DLL)。
圖6依照本發(fā)明示出了用于確定對應(yīng)于標(biāo)簽的最優(yōu)布局的可視數(shù)據(jù)對象的布局的示例性偽代碼。
實現(xiàn)示例性算法600要求指定不同的函數(shù)。InitializeLayout()函數(shù)定義了每一可視元素的初始放置,并由此提供了搜索的起始點。PertubLayout()函數(shù)對應(yīng)于先前描述的擾動函數(shù),并提供了將給定布局改為新布局的方法。RevertLayout()函數(shù)倒轉(zhuǎn)了PerturbLayout()的動作,以從新布局返回到前一布局。Random()函數(shù)返回0.0和1.0之間的數(shù)字。最后,對應(yīng)于先前描述的目標(biāo)函數(shù)的ScoreLayout()函數(shù)計算當(dāng)前布局如何接近最優(yōu)。在一個實施例中,終止條件可以根據(jù)用于實現(xiàn)有用布局的時間限制、布局對于最優(yōu)的接近程度以及其它因素來變化。在另一實施例中,得分被定義為正,且得分越低,布局越好。因此,目標(biāo)是根據(jù)所使用的約束來最小化得分。對于要使用的布局可接受的得分依賴于算法的終止條件。
如在偽代碼中所示的,該算法接受搜索空間內(nèi)所有的好的移動,并且用溫度T的指數(shù)函數(shù)的概率也接受某些差的移動。當(dāng)算法前進(jìn)時,T被退火(或減少),導(dǎo)致接受差移動的概率的降低。以此方式接受差移動允許算法避開評分函數(shù)中的局部最小值。
為提供標(biāo)簽的最優(yōu)布局而定義的約束可包括諸如最小化自錨點的距離、最小化標(biāo)簽的重疊、最小化與元素的重疊、字體限制、方向限制以及影響如何操縱標(biāo)簽的其它限制等約束。可以將任意數(shù)量的約束注入到算法中,用于操縱標(biāo)簽來優(yōu)化其在可查看空間中的位置。
以上說明書、示例和數(shù)據(jù)提供了本發(fā)明的組成部分的制造和使用的完整描述。由于可以在不脫離本發(fā)明的精神和范圍的情況下作出本發(fā)明的許多實施例,本發(fā)明駐留在所附權(quán)利要求書中。
權(quán)利要求
1.一種用于自動定位與可視數(shù)據(jù)對象相關(guān)聯(lián)的標(biāo)簽的計算機(jī)實現(xiàn)的方法,包括確定所述標(biāo)簽的第一布局;對所述第一布局評分以確定第一得分;確定所述標(biāo)簽的第二布局;對所述第二布局評分以確定第二得分;將所述第一得分與所述第二得分進(jìn)行比較;以及根據(jù)所述第一得分和第二得分的比較,用所述第一布局和第二布局之一繼續(xù),作為用于呈現(xiàn)所述可視數(shù)據(jù)對象的選中的布局。
2.如權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其特征在于,對所述第一布局評分以確定第一分?jǐn)?shù)還包括執(zhí)行一目標(biāo)函數(shù),其中,所述目標(biāo)函數(shù)提供了用于對所述第一布局評分的目標(biāo)。
3.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,所述目標(biāo)對應(yīng)于最小化所述標(biāo)簽的重疊。
4.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,所述目標(biāo)對應(yīng)于最小化從所述標(biāo)簽到圖表中其相關(guān)聯(lián)錨點的距離。
5.如權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其特征在于,對所述第一布局評分以確定第一得分還包括將與所述第一布局相關(guān)聯(lián)的得分與同最優(yōu)布局相關(guān)聯(lián)的另一得分進(jìn)行比較。
6.如權(quán)利要求5所述的計算機(jī)實現(xiàn)的方法,其特征在于,用所述第一布局和所述第二布局之一繼續(xù)還包括用最接近地對應(yīng)于最優(yōu)布局的布局繼續(xù)。
7.如權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其特征在于,確定所述標(biāo)簽的第二布局還包括執(zhí)行一擾動函數(shù),其中,所述擾動函數(shù)依照一組約束改變所述第一布局。
8.如權(quán)利要求7所述的計算機(jī)實現(xiàn)的方法,其特征在于,所述擾動函數(shù)對應(yīng)于調(diào)整包括在圖表內(nèi)的單個標(biāo)簽的一方面。
9.如權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其特征在于,還包括重復(fù)確定所述標(biāo)簽的額外布局和對所述額外布局評分的多次迭代,直到達(dá)到逼近最優(yōu)布局的布局。
10.一種用于呈現(xiàn)圖表的系統(tǒng),包括一圖表對象,它被安排成用圖表元素定義圖表;一圖形模塊,它可用于呈現(xiàn)形狀;一制圖模塊,它可用于基于圖表對象生成基于形狀的圖表定義,其中,所述基于形狀的圖表定義用可由所述圖形模塊呈現(xiàn)的形狀定義了所述圖表;以及一標(biāo)簽優(yōu)化,它依照最優(yōu)布局在所述圖表內(nèi)自動定位與所述圖表相關(guān)聯(lián)的標(biāo)簽。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述標(biāo)簽優(yōu)化應(yīng)用程序包括計算機(jī)可執(zhí)行指令,用于確定所述標(biāo)簽的第一布局,對所述第一布局評分以確定第一得分,確定所述標(biāo)簽的第二布局,對所述第二布局評分以確定第二得分,將所述第一得分與所述第二得分進(jìn)行比較,以及根據(jù)所述第一得分和所述第二得分的比較,用所述第一布局和所述第二布局之一繼續(xù),作為用于呈現(xiàn)所述可視數(shù)據(jù)對象的所選中的布局。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,對所述第一布局評分以確定第一得分還包括執(zhí)行一目標(biāo)函數(shù),其中,所述目標(biāo)函數(shù)提供了用于對所述第一布局評分的目標(biāo)。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,對所述第一布局評分以確定第一得分還包括將與所述第一布局相關(guān)聯(lián)的得分與同最優(yōu)布局相關(guān)聯(lián)的另一得分進(jìn)行比較。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,確定所述標(biāo)簽的第二布局還包括執(zhí)行一擾動函數(shù),其中,所述擾動函數(shù)依照一組約束改變所述第一布局。
15.如權(quán)利要求11所述的系統(tǒng),其特征在于,還包括重復(fù)確定所述標(biāo)簽的額外布局并對所述額外布局評分的多次迭代,直到達(dá)到逼近最優(yōu)布局的布局。
16.一種包括計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),所述指令自動定位與可視數(shù)據(jù)對象相關(guān)聯(lián)的標(biāo)簽,所述指令包括確定所述標(biāo)簽的第一布局;對所述第一布局評分以確定第一得分;確定所述標(biāo)簽的第二布局;對所述第二布局評分以確定第二得分;將所述第一得分與所述第二得分進(jìn)行比較;以及根據(jù)所述第一得分和所述第二得分的比較,用所述第一布局和所述第二布局之一繼續(xù),作為用于呈現(xiàn)所述可視數(shù)據(jù)對象的所選中的布局。
17.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其特征在于,對所述第一布局評分以確定第一得分還包括執(zhí)行一目標(biāo)函數(shù),其中,所述目標(biāo)函數(shù)提供了用于對所述第一布局評分的目標(biāo)。
18.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其特征在于,對所述第一布局評分以確定第一得分還包括將與所述第一布局相關(guān)聯(lián)的得分與同最優(yōu)布局相關(guān)聯(lián)的另一得分進(jìn)行比較。
19.如權(quán)利要求18所述的計算機(jī)可讀介質(zhì),其特征在于,用所述第一布局和所述第二布局之一繼續(xù)還包括用最接近地對應(yīng)于最優(yōu)布局的布局繼續(xù)。
20.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其特征在于,確定所述標(biāo)簽的第二布局還包括執(zhí)行一擾動函數(shù),其中,所述擾動函數(shù)依照一組約束改變所述第一布局。
21.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其特征在于,還包括重復(fù)確定所述標(biāo)簽的額外布局和對所述額外布局評分的多次迭代,直到達(dá)到逼近最優(yōu)布局的布局。
全文摘要
提供了一種用于優(yōu)化與諸如圖表等可視數(shù)據(jù)對象相關(guān)聯(lián)的標(biāo)簽的布局的算法。標(biāo)簽首先被放置到將標(biāo)簽定義為形狀的圖表定義文件中。創(chuàng)建該標(biāo)簽的初始布局并對其評分。然后迭代地操縱形狀直到獲得對應(yīng)于具有最接近于最優(yōu)得分的得分的布局的最優(yōu)布局。然后使用該最優(yōu)布局在屏幕上呈現(xiàn)可視數(shù)據(jù)對象。
文檔編號G06F17/24GK1763743SQ20051008852
公開日2006年4月26日 申請日期2005年7月29日 優(yōu)先權(quán)日2004年10月18日
發(fā)明者M·瓦非爾蒂斯, M·阿格拉瓦拉, A·C·埃弗索爾, D·P·科瑞 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1