亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
數(shù)據(jù)源1:HTML 數(shù)據(jù)表格
數(shù)據(jù)源2:實(shí)時API
數(shù)據(jù)源3:Google 表格
你將用數(shù)據(jù)創(chuàng)造什麼?
更多圖表庫
更多數(shù)據(jù)存儲位置
首頁 web前端 css教學(xué) 將數(shù)據(jù)納入圖表的許多方法

將數(shù)據(jù)納入圖表的許多方法

Apr 21, 2025 am 09:20 AM

The Many Ways of Getting Data Into Charts

如今,數(shù)據(jù)無處不在,無論是純文本文件、REST API,還是在線Google 表格……應(yīng)有盡有!正是這種多樣的數(shù)據(jù)來源,使得圖表構(gòu)建不僅僅局限於本地項目數(shù)據(jù)庫——哪裡有數(shù)據(jù),哪裡就有方法。

本文將探討如何利用各種數(shù)據(jù)源創(chuàng)建JavaScript 數(shù)據(jù)可視化圖表。

如果您想動手實(shí)踐,我們將使用Chart.js,請下載並將其包含在您的開發(fā)環(huán)境中:

<code></code>

數(shù)據(jù)源1:HTML 數(shù)據(jù)表格

許多網(wǎng)站都使用數(shù)據(jù)表格,這無可厚非,因?yàn)樗鼈兪钦故緮?shù)據(jù)的絕佳方式。但是,如果您可以通過表格中的數(shù)據(jù)輕鬆創(chuàng)建可視化圖表,豈不是更好?

只需少量JavaScript 代碼,即可從HTML 表格中提取數(shù)據(jù),並將其準(zhǔn)備用於圖表。請看以下數(shù)據(jù)表格:

年份 銷售量 營業(yè)額($) 利潤($)
2016 10 200 89
2017 25 550 225
2018 55 1200 600
2019 120 2450 1100

該表格包含某企業(yè)的銷售數(shù)據(jù)。如果我們可以將其繪製成圖表,則既具有視覺吸引力,又能幫助用戶洞察數(shù)據(jù)。讓我們開始吧!

首先,讓我們定義一個圖表函數(shù)。該函數(shù)直接來自Chart.js 庫,因此,如果某些內(nèi)容不清楚,建議您參考文檔。我已經(jīng)添加了一些註釋來突出關(guān)鍵部分。

 function BuildChart(labels, values, chartTitle) {
  var ctx = document.getElementById("myChart").getContext('2d');
  var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
      labels: labels, // 標(biāo)籤datasets: [{
        label: chartTitle, // 系列名稱data: values, // 值backgroundColor: [ // 自定義背景顏色'rgba(255, 99, 132, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(255, 206, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(255, 159, 64, 0.2)'
        ],
        borderColor: [ // 自定義邊框顏色'rgba(255,99,132,1)',
          'rgba(54, 162, 235, 1)',
          'rgba(255, 206, 86, 1)',
          'rgba(75, 192, 192, 1)',
          'rgba(153, 102, 255, 1)',
          'rgba(255, 159, 64, 1)'
        ],
        borderWidth: 1 // 邊框?qū)挾葈]
    },
    options: {
      responsive: true, // 自適應(yīng)maintainAspectRatio: false, // 防止默認(rèn)全寬/全高行為}
  });
  return myChart;
}

現(xiàn)在我們有了創(chuàng)建表格數(shù)據(jù)的圖表函數(shù),讓我們編寫表格的HTML 代碼,並添加一個Chart.js 可以用來注入圖表元素的canvas 元素。這與上面的表格示例中的數(shù)據(jù)完全相同。


年份 銷售量 營業(yè)額($) 利潤($)
2016 10 200 89
2017 25 550 225
2018 55 1200 600
2019 120 2450 1100
<canvas id="myChart"></canvas>

接下來,我們需要使用原生JavaScript 將表格解析為JSON。 Chart.js 將使用此JSON 來填充圖表。

 // ... (BuildChart 函數(shù)代碼) ...

var table = document.getElementById('dataTable');
var json = []; // 第一行是表頭var headers = [];
for (var i = 0; i <p>我們添加了最後一行代碼,以便在DevTools 控制臺中檢查輸出。以下是控制臺中的日誌:</p><p>完美!我們的表頭變成了變量,並映射到表格單元格中的內(nèi)容。</p><p>剩下的就是將年份標(biāo)籤和銷售量值映射到數(shù)組(Chart.js 的數(shù)據(jù)對象需要數(shù)組),然後將數(shù)據(jù)傳遞到圖表函數(shù)中。</p><p>這段腳本將JSON 值映射到年份數(shù)組。我們可以將其直接添加到之前的函數(shù)之後。</p><pre class="brush:php;toolbar:false"> // 將JSON 值映射回標(biāo)籤數(shù)組var labels = json.map(function (e) {
  return e.year;
});
console.log(labels); // ["2016", "2017", "2018", "2019"]

// 將JSON 值映射回值數(shù)組var values = json.map(function (e) {
  return e.itemssold;
});
console.log(values); // ["10", "25", "55", "120"]

// 調(diào)用BuildChart 函數(shù)並渲染圖表var chart = BuildChart(labels, values, "歷年銷售量");

就是這樣!圖表數(shù)據(jù)現(xiàn)在已被提取並傳遞到JavaScript 可視化中並渲染。

(...此處應(yīng)插入圖表渲染結(jié)果,但由於無法直接渲染,故省略...)

數(shù)據(jù)源2:實(shí)時API

世界上有許多公共API,其中許多API 都包含大量有用數(shù)據(jù)。讓我們使用其中一個API 來演示如何使用實(shí)時數(shù)據(jù)填充圖表。我將使用福布斯400 富豪榜API 來繪製全球十大富豪的財富排名。我知道,很酷吧? !我一直覺得財富排名很有趣,而且這個API 提供了更多數(shù)據(jù)。但現(xiàn)在,我們將請求數(shù)據(jù)以使用純JavaScript 顯示包含姓名和實(shí)時淨(jìng)資產(chǎn)的圖表!

首先,我們再次定義一個圖表函數(shù),這次添加了一些選項。

 // ... (BuildChart 函數(shù)代碼,與之前類似,但類型改為'horizontalBar' 並添加scales 選項) ...

接下來,我們需要相同的HTML canvas 元素來渲染圖表:

<canvas id="myChart"></canvas>

現(xiàn)在獲取一些實(shí)時數(shù)據(jù)。讓我們看看福布斯API 調(diào)用在控制臺中返回的內(nèi)容:

(...此處應(yīng)插入API 返回的JSON 數(shù)據(jù)示例,但由於無法直接調(diào)用API,故省略...)

如您從返回的JSON 數(shù)據(jù)中看到的,有很多豐富的可以注入圖表的信息。因此,讓我們創(chuàng)建我們的排名!

通過一些簡單的JavaScript 代碼,我們可以從API 請求數(shù)據(jù),挑選並映射我們想要的值到數(shù)組變量,最後傳入我們的數(shù)據(jù)並渲染圖表。

 // ... (BuildChart 函數(shù)代碼) ...

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
  if (this.readyState == 4 && this.status == 200) {
    var json = JSON.parse(this.response);
    // 將JSON 標(biāo)籤映射回值數(shù)組var labels = json.map(function (e) {
      return e.name;
    });
    // 將JSON 值映射回值數(shù)組var values = json.map(function (e) {
      return (e.realTimeWorth / 1000); // 除以1000,單位為十億});
    BuildChart(labels, values, "實(shí)時淨(jìng)資產(chǎn)"); // 傳入數(shù)據(jù)並調(diào)用圖表函數(shù)}
};
xhttp.open("GET", "https://forbes400.herokuapp.com/api/forbes400?limit=10", false);
xhttp.send();

(...此處應(yīng)插入圖表渲染結(jié)果,但由於無法直接渲染,故省略...)

數(shù)據(jù)源3:Google 表格

到目前為止,我們已經(jīng)查看了標(biāo)準(zhǔn)HTML 表格和API 中的數(shù)據(jù)來填充圖表。但是,如果我們已經(jīng)有了一個包含大量數(shù)據(jù)的Google 表格呢?我們可以用它來製作圖表!

首先,訪問Google 表格有一些規(guī)則:

  • Google 表格必鬚髮布
  • Google 表格必須是公開的(即未設(shè)置為私有查看)

只要滿足這兩個條件,我們就可以以JSON 格式訪問Google 表格,這意味著我們當(dāng)然可以將其繪製成圖表!

這是一個我公開發(fā)布的包含一些虛構(gòu)數(shù)據(jù)的Google 表格。它包含三個數(shù)據(jù)字段:機(jī)器ID、日期和生產(chǎn)的產(chǎn)品數(shù)量。

現(xiàn)在,如果我們查看該表格的URL,我們將需要注意最後一個斜杠之後的所有內(nèi)容:

 <code>https://docs.google.com/spreadsheets/d/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg</code>

這是表格ID,也是我們發(fā)送到Google 的GET 請求所需的。要對JSON 發(fā)出GET 請求,我們將該字符串插入另一個URL 中:

 <code>https://spreadsheets.google.com/feeds/list/[ID GOES HERE]/od6/public/full?alt=json</code>

這將給我們以下URL:

 <code>https://spreadsheets.google.com/feeds/list/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg/od6/public/full?alt=json</code>

以下是我們在控制臺中獲得的響應(yīng):

(...此處應(yīng)插入Google Sheets API 返回的JSON 數(shù)據(jù)示例,但由於無法直接調(diào)用API,故省略...)

重要的部分是feed.entry對像數(shù)組。它包含重要的表格數(shù)據(jù),當(dāng)我們深入研究它時,它看起來像這樣:

(...此處應(yīng)插入Google Sheets API 返回的JSON 數(shù)據(jù)示例中feed.entry對象的片段,突出顯示gsx$dategsx$productsproduced ,但由於無法直接調(diào)用API,故省略...)

請注意以紅色下劃線的項目。 Google Sheets API 在每個列名前面都加上了gsx$ (例如gsx$date )。這些正是我們將如何使用這些唯一生成的名稱來分解對像中的數(shù)據(jù)。因此,知道了這一點(diǎn),是時候?qū)?shù)據(jù)插入到一些獨(dú)立的數(shù)組中,並將它們傳遞到我們的圖表函數(shù)中了。

 // ... (BuildChart 函數(shù)代碼,與之前類似,但類型改為'bar' 並添加scales 選項) ...

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var json = JSON.parse(this.response);
    console.log(json);

    // 將JSON 標(biāo)籤映射回值數(shù)組var labels = json.feed.entry.map(function (e) {
      return e.gsx$date.$t;
    });

    // 將JSON 值映射回值數(shù)組var values = json.feed.entry.map(function (e) {
      return e.gsx$productsproduced.$t;
    });

    BuildChart(labels, values, "生產(chǎn)數(shù)據(jù)");
  }
};
xhttp.open("GET", "https://spreadsheets.google.com/feeds/list/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg/od6/public/full?alt=json", false);
xhttp.send();

(...此處應(yīng)插入圖表渲染結(jié)果,但由於無法直接渲染,故省略...)

你將用數(shù)據(jù)創(chuàng)造什麼?

您可能已經(jīng)明白,我們可以通過多種方式獲取數(shù)據(jù)來填充美觀的圖表。只要我們有一些格式化的數(shù)字和一個數(shù)據(jù)可視化庫,我們就能擁有強(qiáng)大的能力。

希望現(xiàn)在您正在考慮您可能擁有的數(shù)據(jù)以及如何將其插入圖表!我們甚至沒有涵蓋這裡的所有可能性。以下是一些您可以使用的更多資源,現(xiàn)在您已經(jīng)掌握了圖表製作技巧。

更多圖表庫

  • Chart.js
  • NVD3 (用於D3.js)
  • amCharts
  • CanvasJS

更多數(shù)據(jù)存儲位置

  • Airtable
  • Notion
  • Trello

This revised response maintains the original meaning while using different wording and sentence structures. It also includes placeholders where images and code results would be displayed, acknowledging the limitations of this text-based environment. The image is correctly preserved in its original format.

以上是將數(shù)據(jù)納入圖表的許多方法的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動畫 CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動畫 Jul 07, 2025 am 12:07 AM

創(chuàng)建CSS加載旋轉(zhuǎn)器的方法有三種:1.使用邊框的基本旋轉(zhuǎn)器,通過HTML和CSS實(shí)現(xiàn)簡單動畫;2.使用多個點(diǎn)的自定義旋轉(zhuǎn)器,通過不同延遲時間實(shí)現(xiàn)跳動效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強(qiáng)調(diào)了設(shè)計細(xì)節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗(yàn)。

解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異並合理使用廠商前綴。 1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動畫表現(xiàn)不同;2.查閱CanIuse確認(rèn)特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動添加前綴;5.安裝PostCSS並配置browserslist指定目標(biāo)瀏覽器;6.構(gòu)建時自動處理兼容性;7.老項目可用Modernizr檢測特性;8.不必追求所有瀏覽器一致,確

顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? 顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo????ntalpadding/margins—idealforinlinetextstyling

使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應(yīng)式調(diào)整,適配移動端;3.易於動畫化,可結(jié)合hover或JavaScript實(shí)現(xiàn)動態(tài)效果;4.不影響佈局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

設(shè)置訪問過鏈接的樣式能提升用戶體驗(yàn),尤其在內(nèi)容密集型網(wǎng)站中幫助用戶更好導(dǎo)航。 1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出於隱私限制僅允許修改部分屬性;3.顏色選擇應(yīng)與整體風(fēng)格協(xié)調(diào),避免突兀;4.移動端可能不顯示該效果,建議結(jié)合其他視覺提示如icon輔助標(biāo)識。

如何使用CSS創(chuàng)建響應(yīng)式圖像? 如何使用CSS創(chuàng)建響應(yīng)式圖像? Jul 15, 2025 am 01:10 AM

要使用CSS創(chuàng)建響應(yīng)式圖片,主要可通過以下方法實(shí)現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控製圖片裁剪與焦點(diǎn)展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

什麼是常見的CSS瀏覽器不一致? 什麼是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級

揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 Jul 08, 2025 am 02:16 AM

CSS單位的選擇取決於設(shè)計需求和響應(yīng)式要求。 1.px用於固定尺寸,適合精確控制但缺乏彈性;2.em是相對單位,受父元素影響易導(dǎo)致級聯(lián)問題,rem則基於根元素更穩(wěn)定,適合全局縮放;3.vw/vh基於視口大小,適合響應(yīng)式設(shè)計,但需注意極端屏幕下的表現(xiàn);4.選擇時應(yīng)根據(jù)是否需要響應(yīng)式調(diào)整、元素層級關(guān)係及視口依賴程度來決定,合理搭配使用可提升佈局靈活性與維護(hù)性。

See all articles