翻譯|使用教程|編輯:吳園園|2019-07-26 11:19:27.767|閱讀 268 次
概述:AnyChart是靈活的高度可定制的跨瀏覽器、跨平臺JavaScript (HTML5) 圖表控件。今天的教程是關于JS極坐標圖。花大約5分鐘,你會發現如何繪制一個美麗的極地圖表,但只顯示其一半,使其成為一個半極坐標圖表。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
數據可視化任務
客戶希望我們回答的問題:
是否可以在AnyChart JS圖表中顯示極地圖表的一半?
為了解釋他愿意在他的圖表上看到的內容,客戶向我們發送了以下圖片的鏈接:
要解決此任務,我們需要了解極坐標圖類的API方法,將極坐標圖向左移動并在其上繪制彩色線。
方案概述
首先,我們設置一個容器并在其中繪制極坐標圖。接下來,我們只是將圖表的一半移動到容器邊界之外并更改圖表外觀。
為了處理主要任務,我們創建了一個使用chart.left()方法的函數。在這種情況下,圖表向左移動容器的寬度(隱藏圖表的一半)加上30(使軸標簽看起來更好)。
functionrelocateChart(chart) { chart.left(-chart.container().getBounds().width+30); }
該函數在我們啟動圖表繪制之前以及每次調整容器大小時執行,因此我們的圖表保持不變。
chart.listen('chartDraw', function(){ relocateChart(chart); });
該半極坐標圖如下圖所示:
如您所見,當API中存在適當的方法時,一些挑戰實際上是簡單的任務。現在讓我們通過API 的Polar Chart部分來設置圖表外觀。
改變圖表外觀
我們在這里應該做的是在圖表上繪制幾條彩色線條,以給定的格式顯示標簽,并使網格線點綴。
首先,我們向數據集添加一些數據:
var data = [ {x: 52, value: 5.5}, {x: 60, value: 5.9}, {x: 75, value: 6.24}, {x: 90, value: 6.24}, {x: 110, value: 6.28}, {x: 120, value: 6.08}, {x: 135, value: 5.36}, {x: 150, value: 4.5}, {x: 160, value: null}, ];
現在我們使用數據顯示線條并為每個系列設置特定顏色:
var series = chart.polyline(data); series.color("#4d9ece");
然后我們按照自己的意愿展示標簽:
chart.yAxis().labels().anchor('left-center') .offsetY(-2) .format('{%value}kts')
并自定義網格使網格線點綴:
chart.xGrid().stroke({ dash: "1 5" });
如下圖所示。您可以在AnyChart Playground嘗試修改此半極坐標圖示:
以下是完整代碼:
anychart.onDocumentReady(function () { var chart = anychart.polar(); // add the lines to the chart var series = chart.polyline(getData()[0]); series.color("#4d9ece"); var series2 = chart.polyline(getData()[1]); series2.color("#ff9941"); var series3 = chart.polyline(getData()[2]); series3.color("#0db341"); var series4 = chart.polyline(getData()[3]); series4.color("#f35556"); var series5 = chart.polyline(getData()[4]); series5.color("#ad6ac7"); var series6 = chart.polyline(getData()[5]); series6.color("#16ccda"); var series7 = chart.polyline(getData()[6]); series7.color("#f873c7"); // set the maximum value of the x-scale chart.xScale().maximum(360) .ticks([0,45,52,60,75,90,110,120,135,150,165]); chart.yScale().minimum(0) .ticks([0,2,4,6,8,10]); chart.yScale().maximum(10); // format labels chart.yAxis().labels().anchor('left-center') .offsetY(-2) .format('{%value}kts') chart.xAxis().labels().format('{%value}°') chart.xAxis().ticks().length(0); // customize grids chart.xGrid().stroke({ dash: "1 5" }); chart.yGrid().stroke({ dash: "1 5" }); // set the container id chart.container("container"); relocateChart(chart); chart.draw(); chart.listen('chartDraw', function(){ relocateChart(chart); }); }); function relocateChart(chart) { chart.left(-chart.container().getBounds().width+30); } function getData() { return [[ {x: 52, value: 5.5}, {x: 60, value: 5.9}, {x: 75, value: 6.24}, {x: 90, value: 6.24}, {x: 110, value: 6.28}, {x: 120, value: 6.08}, {x: 135, value: 5.36}, {x: 150, value: 4.5}, {x: 160, value: null}, ], [ {x: 52, value: 6.6}, {x: 60, value: 6.85}, {x: 75, value: 7.02}, {x: 90, value: 7.06}, {x: 110, value: 7.21}, {x: 120, value: 7.1}, {x: 135, value: 6.65}, {x: 150, value: 5.66}, {x: 160, value: null}, ], [ {x: 52, value: 6.98}, {x: 60, value: 7.19}, {x: 75, value: 7.42}, {x: 90, value: 7.47}, {x: 110, value: 7.71}, {x: 120, value: 7.71}, {x: 135, value: 7.31}, {x: 150, value: 6.65}, {x: 160, value: null}, ], [ {x: 52, value: 7.12}, {x: 60, value: 7.34}, {x: 75, value: 7.74}, {x: 90, value: 7.95}, {x: 110, value: 8.08}, {x: 120, value: 8.36}, {x: 135, value: 7.91}, {x: 150, value: 7.25}, {x: 160, value: null}, ], [ {x: 52, value: 7.2}, {x: 60, value: 7.44}, {x: 75, value: 7.94}, {x: 90, value: 8.42}, {x: 110, value: 8.48}, {x: 120, value: 8.82}, {x: 135, value: 8.7}, {x: 170, value: 7}, {x: 175, value: null}, ], [ {x: 52, value: 7.3}, {x: 60, value: 7.53}, {x: 75, value: 8.07}, {x: 90, value: 8.72}, {x: 110, value: 8.87}, {x: 120, value: 9.27}, {x: 135, value: 9.71}, {x: 150, value: 8.34}, {x: 160, value: null}, ], [ {x: 52, value: 7.41}, {x: 60, value: 7.73}, {x: 75, value: 8.35}, {x: 90, value: 8.99}, {x: 110, value: 9.89}, {x: 120, value: 10.22}, {x: 135, value: 11.4}, {x: 150, value: 10.43}, {x: 160, value: null}, ]]; }
如果這篇關于如何使用JavaScript構建半極地圖的文章對您有用,歡迎分享您的疑問和想法!
想要購買Anychart正版授權的朋友可以。
有關產品資訊的更多精彩內容,敬請關注下方的微信公眾號▼▼▼
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: