国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
Data Source 1: HTML Data Table
Data Source 2: Real-time API
Data Source 3: Google Sheets
What will you create with your data?
More chart library
More data storage locations
Home Web Front-end CSS Tutorial The Many Ways of Getting Data Into Charts

The Many Ways of Getting Data Into Charts

Apr 21, 2025 am 09:20 AM

The Many Ways of Getting Data Into Charts

Nowadays, data is everywhere, whether it is plain text files, REST APIs, or online Google Sheets... everything is available! It is this diverse source of data that makes chart construction more than just local project databases—where there is data, there is a method.

This article will explore how to create JavaScript data visualization charts using various data sources.

If you want to do it, we will use Chart.js, download and include it in your development environment:

<code></code>

Data Source 1: HTML Data Table

Many websites use data sheets, which is understandable because they are a great way to display data. But wouldn't it be better if you could easily create visual charts with data in tables?

With just a small amount of JavaScript code, you can extract data from HTML tables and prepare them for use in the chart. Please see the following data table:

years Sales volume Turnover ($) Profit ($)
2016 10 200 89
2017 25 550 225
2018 55 1200 600
2019 120 2450 1100

This table contains sales data for a company. If we can draw it into a graph, it will be both visually attractive and help users to see the data. Let's get started!

First, let's define a chart function. This function comes directly from the Chart.js library, so if something is unclear, you are advised to refer to the documentation. I've added some comments to highlight the key parts.

 function BuildChart(labels, values, chartTitle) {
  var ctx = document.getElementById("myChart").getContext('2d');
  var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
      labels: labels, // tag datasets: [{
        label: chartTitle, // Series name data: values, // Value backgroundColor: [ // Custom background color '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: [ // Custom border color '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 // Border Width}]
    },
    options: {
      responsive: true, // Adaptive maintainAspectRatio: false, // Prevent default full width/full height behavior}
  });
  return myChart;
}

Now that we have the chart function to create table data, let's write the HTML code for the table and add a canvas element that Chart.js can be used to inject chart elements. This is exactly the same as the data in the table example above.


years Sales volume Turnover ($) Profit ($)
2016 10 200 89
2017 25 550 225
2018 55 1200 600
2019 120 2450 1100
<canvas id="myChart"></canvas>

Next, we need to parse the table into JSON using native JavaScript. Chart.js will use this JSON to populate the chart.

 // ... (BuildChart function code) ...

var table = document.getElementById('dataTable');
var json = []; // The first line is the header var headers = [];
for (var i = 0; i <p> We added the last line of code to check the output in the DevTools console. Here are the logs in the console:</p><p> Perfect! Our table header becomes a variable and maps to the contents in the table cell.</p><p> All that's left is to map year labels and sales value to an array (the data object of Chart.js requires an array), and then pass the data into the chart function.</p><p> This script maps JSON values ??to an array of years. We can add it directly after the previous function.</p><pre class="brush:php;toolbar:false"> // Map JSON values ??back to label array var labels = json.map(function (e) {
  return e.year;
});
console.log(labels); // ["2016", "2017", "2018", "2019"]

// Map JSON values ??back to value array var values ??= json.map(function (e) {
  return e.itemssold;
});
console.log(values); // ["10", "25", "55", "120"]

// Call the BuildChart function and render the chart var chart = BuildChart(labels, values, "Previous sales");

That's it! Chart data has now been extracted and passed into JavaScript visualization and rendered.

(...The chart rendering result should be inserted here, but since it cannot be rendered directly, it is omitted...)

Data Source 2: Real-time API

There are many public APIs in the world, many of which contain a lot of useful data. Let's use one of the APIs to demonstrate how to populate charts with real-time data. I will use the Forbes 400 Rich List API to draw the wealth rankings of the top ten richest people in the world. I know, isn't it? ! I always find wealth rankings interesting, and this API provides more data. But now we will request data to display a chart with names and real-time net worth using pure JavaScript!

First, we define a chart function again, adding some options this time.

 // ... (BuildChart function code, similar to before, but changed to 'horizontalBar' and added scales option) ...

Next, we need the same HTML canvas element to render the chart:

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

Now get some real-time data. Let's see what the Forbes API call returns in the console:

(...The example of JSON data returned by the API should be inserted here, but since the API cannot be called directly, it is omitted...)

As you can see from the returned JSON data, there is a lot of rich information that can be injected into the chart. So let's create our rankings!

With some simple JavaScript code, we can request data from the API, pick and map the values ??we want to array variables, and finally pass in our data and render the chart.

 // ... (BuildChart function code) ...

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
  if (this.readyState == 4 && this.status == 200) {
    var json = JSON.parse(this.response);
    // Map the JSON tags back to the value array var labels = json.map(function (e) {
      return e.name;
    });
    // Map JSON values ??back to value array var values ??= json.map(function (e) {
      return (e.realTimeWorth / 1000); // Divide by 1000, the unit is billion});
    BuildChart(labels, values, "real-time net assets"); // Pass in data and call chart function}
};
xhttp.open("GET", "https://forbes400.herokuapp.com/api/forbes400?limit=10", false);
xhttp.send();

(...The chart rendering result should be inserted here, but since it cannot be rendered directly, it is omitted...)

Data Source 3: Google Sheets

So far, we have looked at the data in standard HTML tables and APIs to populate the charts. But what if we already have a Google Sheet with a lot of data? We can use it to make charts!

First, there are some rules to access Google Sheets:

  • Google Sheets Must be published
  • Google Sheets must be public (i.e. not set to private viewing)

As long as these two conditions are met, we can access Google Sheets in JSON format, which means we can certainly draw them into charts!

This is a Google Sheet that I published publicly with some fictitious data. It contains three data fields: machine ID, date, and quantity of products produced.

Now, if we look at the URL of the table, we will need to pay attention to everything after the last slash:

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

This is the table ID, and it is also what we need to send GET requests to Google. To issue a GET request to JSON, we insert the string into another URL:

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

This will give us the following URL:

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

Here is the response we get in the console:

(...A sample of JSON data returned by the Google Sheets API should be inserted here, but since the API cannot be called directly, it is omitted...)

The important part is feed.entry object array. It contains important tabular data, and when we dig into it, it looks like this:

(...The fragment of the feed.entry object in the JSON data sample returned by the Google Sheets API should be inserted here, highlighting gsx$date and gsx$productsproduced , but since the API cannot be called directly, it is omitted...)

Please note items underlined in red. The Google Sheets API precedes each column name with gsx$ (for example, gsx$date ). These are exactly how we will use these uniquely generated names to decompose the data in the object. So knowing this, it's time to insert the data into some independent array and pass them into our chart function.

 // ... (BuildChart function code, similar to before, but changed to 'bar' and added the scales option) ...

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

    // Map the JSON tags back to the value array var labels = json.feed.entry.map(function (e) {
      return e.gsx$date.$t;
    });

    // Map JSON values ??back to value array var values ??= json.feed.entry.map(function (e) {
      return e.gsx$productsproduced.$t;
    });

    BuildChart(labels, values, "production data");
  }
};
xhttp.open("GET", "https://spreadsheets.google.com/feeds/list/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg/od6/public/full?alt=json", false);
xhttp.send();

(...The chart rendering result should be inserted here, but since it cannot be rendered directly, it is omitted...)

What will you create with your data?

You may have understood that there are a number of ways we can get data to fill in beautiful charts. As long as we have some formatted numbers and a data visualization library, we can have powerful capabilities.

Hopefully now you are thinking about the data you might have and how to insert it into the chart! We don't even cover all the possibilities here. Here are some more resources you can use, and now you have mastered the chart making tips.

More chart library

  • Chart.js
  • NVD3 (for D3.js)
  • amCharts
  • CanvasJS

More data storage locations

  • 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.

The above is the detailed content of The Many Ways of Getting Data Into Charts. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is 'render-blocking CSS'? What is 'render-blocking CSS'? Jun 24, 2025 am 12:42 AM

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

External vs. Internal CSS: What's the Best Approach? External vs. Internal CSS: What's the Best Approach? Jun 20, 2025 am 12:45 AM

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

Does my CSS must be on lower case? Does my CSS must be on lower case? Jun 19, 2025 am 12:29 AM

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.

CSS Case Sensitivity: Understanding What Matters CSS Case Sensitivity: Understanding What Matters Jun 20, 2025 am 12:09 AM

CSSismostlycase-insensitive,butURLsandfontfamilynamesarecase-sensitive.1)Propertiesandvalueslikecolor:red;arenotcase-sensitive.2)URLsmustmatchtheserver'scase,e.g.,/images/Logo.png.3)Fontfamilynameslike'OpenSans'mustbeexact.

What is Autoprefixer and how does it work? What is Autoprefixer and how does it work? Jul 02, 2025 am 01:15 AM

Autoprefixer is a tool that automatically adds vendor prefixes to CSS attributes based on the target browser scope. 1. It solves the problem of manually maintaining prefixes with errors; 2. Work through the PostCSS plug-in form, parse CSS, analyze attributes that need to be prefixed, and generate code according to configuration; 3. The usage steps include installing plug-ins, setting browserslist, and enabling them in the build process; 4. Notes include not manually adding prefixes, keeping configuration updates, prefixes not all attributes, and it is recommended to use them with the preprocessor.

What are CSS counters? What are CSS counters? Jun 19, 2025 am 12:34 AM

CSScounterscanautomaticallynumbersectionsandlists.1)Usecounter-resettoinitialize,counter-incrementtoincrease,andcounter()orcounters()todisplayvalues.2)CombinewithJavaScriptfordynamiccontenttoensureaccurateupdates.

CSS: When Does Case Matter (and When Doesn't)? CSS: When Does Case Matter (and When Doesn't)? Jun 19, 2025 am 12:27 AM

In CSS, selector and attribute names are case-sensitive, while values, named colors, URLs, and custom attributes are case-sensitive. 1. The selector and attribute names are case-insensitive, such as background-color and background-Color are the same. 2. The hexadecimal color in the value is case-sensitive, but the named color is case-sensitive, such as red and Red is invalid. 3. URLs are case sensitive and may cause file loading problems. 4. Custom properties (variables) are case sensitive, and you need to pay attention to the consistency of case when using them.

What is the conic-gradient() function? What is the conic-gradient() function? Jul 01, 2025 am 01:16 AM

Theconic-gradient()functioninCSScreatescirculargradientsthatrotatecolorstopsaroundacentralpoint.1.Itisidealforpiecharts,progressindicators,colorwheels,anddecorativebackgrounds.2.Itworksbydefiningcolorstopsatspecificangles,optionallystartingfromadefin

See all articles