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

目錄
數(shù)據(jù)源 1:HTML 數(shù)據(jù)表格
數(shù)據(jù)源 2:實時 API
數(shù)據(jù)源 3:Google 表格
你將用數(shù)據(jù)創(chuàng)造什么?
更多圖表庫
更多數(shù)據(jù)存儲位置
首頁 web前端 css教程 將數(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ù)可視化圖表。

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

<code></code>

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

許多網(wǎng)站都使用數(shù)據(jù)表格,這無可厚非,因為它們是展示數(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, // 防止默認全寬/全高行為
    }
  });
  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:實時 API

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

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

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

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

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

現(xiàn)在獲取一些實時數(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, "實時凈資產(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 表格必須發(fā)布
  • Google 表格必須是公開的(即未設(shè)置為私有查看)

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

這是一個我公開發(fā)布的包含一些虛構(gòu)數(shù)據(jù)的 Google 表格。它包含三個數(shù)據(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ù)。因此,知道了這一點,是時候?qū)?shù)據(jù)插入到一些獨立的數(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ù)可視化庫,我們就能擁有強大的能力。

希望現(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ù)納入圖表的許多方法的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

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

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的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實現(xiàn)簡單動畫;2.使用多個點的自定義旋轉(zhuǎn)器,通過不同延遲時間實現(xiàn)跳動效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強調(diào)了設(shè)計細節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗。

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

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異并合理使用廠商前綴。1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動畫表現(xiàn)不同;2.查閱CanIuse確認特性支持情況;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實現(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è)置訪問過鏈接的樣式能提升用戶體驗,尤其在內(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)式圖片,主要可通過以下方法實現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控制圖片裁剪與焦點展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

揭開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)系及視口依賴程度來決定,合理搭配使用可提升布局靈活性與維護性。

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

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

See all articles