原創|行業資訊|編輯:楊鵬連|2021-02-04 10:07:26.260|閱讀 264 次
概述:可拖動圖表是一組特殊的圖表,可讓您直觀地操作圖表上的數據,然后將其提交回去。這些圖表可大量用于模擬,財務計劃等。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
FusionCharts Suite XT是全面的跨平臺、跨瀏覽器JavaScript圖表套包,其中包括FusionCharts XT、PowerCharts XT 、FusionWidgets XT、FusionMaps XT。支持 ASP、 ASP.NET、 PHP、 JSP、 ColdFusion、 Ruby on Rails、 JavaScript、甚至簡單的HTML頁面。它是你值得信賴的JavaScript圖表解決方案,目前在全球有45萬用戶選擇Fusioncharts來制作專業的JavaScript圖表。
可拖動圖表是一組特殊的圖表,可讓您直觀地操作圖表上的數據,然后將其提交回去。這些圖表可大量用于模擬,財務計劃等??赏蟿拥膱D表使您可以可視化數據變形以更新圖表中的數字。這些圖表從多系列列,多系列折線和多系列面積圖得出其基本特征。
	FusionCharts Suite XT提供以下三種可拖動圖表:
	
讓我們創建我們的第一個可拖動的2D柱形圖,顯示Bakersfield Central前五種食品的實際和估計庫存狀態。
	要創建可拖動的2D柱形圖,請執行以下步驟:
	
上面的代碼的可拖動的2D柱形圖如下所示:
 
	在上圖中,代表估計值的數據圖是可拖動的。
上面的示例還顯示了一個外部表,其中包含“估計的需求”數據集中的值。圖表上的值一旦更新,表格也將更新。這是通過使用dataPlotDragEnd事件檢索更新的值來完成的。觀察到Restore圖表上還有一個按鈕。單擊恢復按鈕后,所有數據將重置為其原始值。這是使用dataRestored事件完成的。
一旦完成了數據的可視更新,就可以將數據作為表單數據(例如HTML表單)提交回服務器,或者提交給與圖表在同一頁面上的JavaScript函數。然后,這些JavaScript函數可以處理數據并做有需要的事情。
可拖動的2D線圖
要渲染可拖動的2D折線圖,請將type屬性的值從更改dragcolumn2d為dragline。
該示例將展示蘋果和三星的季度銷售額。這些指標將代表蘋果和三星第三季度和第四季度的銷售預測是可拖動的?;叵胍幌?,在上面的可拖動二維列圖表中,我們已將一個數據集的所有數據圖配置為可拖動。但是,在此圖表中,我們僅使所有數據集的選定數據點可拖動。
有關屬性的詳細列表,請參閱可拖動線2D圖表的圖表屬性頁面。
創建的可拖動的2D折線圖用于繪制Apple和Samsung的季度銷售額,如下所示:
 
	可拖動區域2D圖表
要渲染可拖動區域2D圖表,請將type屬性的值從更改dragline為dragarea。其余數據結構保持不變。
有關屬性的詳細列表,請參見可拖動區域2D圖表的圖表屬性頁面。
這樣創建的可拖動區域2D圖表如下所示:
 
	現在,讓我們自定義圖表的外觀和屬性。
改變軸線限制默認情況下,該圖表根據提供給它的數據計算y軸的上下限。要使該列采用此軸范圍內未涵蓋的值,請使用圖表右上方的菜單按鈕增加或減少限制。
單擊菜單按鈕,將顯示一個帶有用于增加或減少上限和下限的選項的彈出窗口。
選擇以上任一選項,以使用自動計算的間隔增加或減少圖表限制。
	
但是,要設置上限/下限的手動值,請單擊限制并直接進行編輯。
 
	
 
	
	通過FusionCharts Suite XT,您可以使用JavaScript API設置和檢索圖表的上限和下限。下面列出了一些設置和檢索圖表限制的方法:
	
events: {
    'rendered': function(evtObj, argObj) {
        var chartIns = evtObj.sender,
            chartMaxLimit = chartIns.getUpperLimit(),
            chartMinLimit = chartIns.getLowerLimit();
            document.getElementById('max-limit').value = chartMaxLimit;
            document.getElementById('min-limit').value = chartMinLimit;
    },
    'beforeRender': function(evt, args) {
        if (!document.getElementById('controllers')) {
            var controllers = document.createElement('div'),
            chartRef = evt.sender,
            maxBtn,
            minBtn,
            maxTxtFld,
            minTxtFld,
            setMaxLimit = function() {
                var maxLimit = maxTxtFld.value,
                crntLimit = chartRef && chartRef.getUpperLimit(),
                status;
                if (maxLimit != crntLimit) {
                    status = chartRef && chartRef.setUpperLimit(maxLimit);
                    if (status) {
                        alert('Max limit updated successfully');
                    } else {
                        maxTxtFld.value = crntLimit;
                        alert('Max limit could not be updated!')
                    }
                }
            },
            setMinLimit = function() {
                var minLimit = minTxtFld.value,
                crntLimit = chartRef && chartRef.getLowerLimit(),
                status;
                if (minLimit != crntLimit) {
                    status = chartRef && chartRef.setLowerLimit(minLimit);
                    if (status) {
                        alert('Min limit updated successfully');
                    } else {
                        minTxtFld.value = crntLimit;
                        alert('Min limit could not be updated!')
                    }
                }
            };
            controllers.setAttribute('id', 'controllers');
            // Create elements inside div
            controllers.innerHTML = '<div id="controllers" style="margin-left: 20px;font-weight:bold;"><p>Reset values to update limits.<p><div style="padding-top: 10px;"><span><input type="text" id="max-limit" style="max-width: 100px;font-weight: bold; margin-bottom:0px !important;"/><input type="button" id="max-btn" style="font-size: 16px; margin-left: 5px; margin-top: 0px; padding: 2px 5px; width:120px;" value="Set Max Value"/></span></div><div style="padding-top: 10px;"><span><input type="text" id="min-limit" style="max-width: 100px;font-weight: bold; margin-bottom:0px !important;"/><input type="button" id="min-btn" style="font-size: 16px; margin-left: 5px; margin-top: 0px; padding: 2px 5px; width:120px;" value="Set Min Value"/></span></div></div>';
            args.container.parentNode.insertBefore(controllers, args.container.nextSibling);\\
            maxBtn = document.getElementById('max-btn');
            minBtn = document.getElementById('min-btn');
            maxTxtFld = document.getElementById('max-limit');
            minTxtFld = document.getElementById('min-limit');
            //Add listener to buttons
            if (maxBtn.addEventListener) {
                maxBtn.addEventListener("click", setMaxLimit);
                minBtn.addEventListener("click", setMinLimit);
            } else {
                maxBtn.onclick && maxBtn.onclick(setMaxLimit);
                minBtn.onclick && minBtn.onclick(setMinLimit);
            }
        }
    }
}
配置為使用JavaScript API管理圖表限制的可拖動區域圖表如下所示:
 
	捕捉到最近的分區線
限制數據圖相對于圖表上分隔線的拖動,即,可以將數據圖配置為在落入分隔線的指定距離內時捕捉到最近的分隔線。
	要捕捉到最接近的分割線,請按照以下步驟操作:
	
{
    "chart": {
        "snapToDiv": "1",
        "snapToDivRelaxation": "5"
    }
}
配置為捕捉到最接近的div間隔的可拖動柱形圖如下所示: 
	檢索數據集
	可以將可拖動的2D柱形圖表配置為檢索JSON數據并將其呈現在警報窗口中。getJSONData需要在現有圖表上調用該函數。它獲取以JSON格式在圖表上設置的數據。在沒有數據集的圖表上調用此函數將返回一個空{ }對象。
檢索數據集的圖表如下所示:
 
	檢索數據使用getDataWithID()函數
	該getDataWithID()函數返回一個三維數組,其中包含數據和數據集ID。一旦獲得了圖表的參考,就可以調用該函數來檢索數據。
配置為使用該getDataWithID()函數檢索數據的可拖動柱形圖如下所示:
 
	該getDataWithID()函數返回的數據未經任何編輯。
該方法的關鍵指標是:
 
	檢索數據使用的getData()函數
該getData()函數與該函數相似,不同之getDataWithID()處在于它僅返回圖表上數據的更新值,而不返回其ID。
因此,該getData()函數返回的數組是一個二維數組,其中每個數據單元格僅包含表示圖表上數據最終值的數值。
配置為使用該getData()方法檢索數據的拖動柱形圖如下所示:
	
想要購買FusionCharts Suite XT正版授權,或了解更多產品信息請點擊
	
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自: