Giter Club home page Giter Club logo

Comments (4)

sgratzl avatar sgratzl commented on May 21, 2024

can you describe where you are stuck, cause as far as I can see, it is

  1. fetching the data from the server
  2. have a topojson file with all the countries
    1 .mixing them both to create the required {feature, value} data structure
  3. feeding that into the library

from chartjs-chart-geo.

anand-010 avatar anand-010 commented on May 21, 2024

Finally code working can you find a way to work this code in an optimum way.

  // world map
  fetch('https://unpkg.com/world-atlas/countries-110m.json').then((r) => r.json()).then((data) => {
    let canvas = document.getElementById('world_map') as
    HTMLCanvasElement;
    let context = canvas.getContext("2d");
    const countries = ChartGeo.topojson.feature(data, data.objects.countries).features;
    console.log(ChartGeo.topojson);
    
    // TODO additional
    let mycontrylist = [{counry: 'India',count:10},{counry:'South Korea',count:15},{counry:'Vietnam',count:8}];
    let display_list = [];
    countries.forEach(element => {
      let flag:any = {flag:false};
      mycontrylist.forEach((elem)=>{
        var temp = element.properties.name === elem.counry;
        // console.log(temp);
        if (temp) {
          let t2 = countries.find((d) => d.properties.name === elem.counry);
          flag = { feature: t2, flag:true, value:elem.count};
        }
      })
      if (flag.flag) {
        console.log(flag);   
        display_list.push({feature : flag.feature, value: flag.value})
      }
      else{
        display_list.push({feature: element, value: 0 })
      }
    });
    // console.log("contries",countries.map((d) => d.properties.name));

    this.world_map = new Chart(context, {
      type: 'choropleth',
      data: {
        labels: countries.map((d) => d.properties.name),
        datasets: [{
          label: 'Countries',
          // data: countries.map((d) => ({feature: d, value: Math.random()})),
          data: display_list,
        }]
      },
      options: {
        showOutline: true,
        showGraticule: true,
        legend: {
          display: false
        },
        scale: {
          projection: 'equalEarth'
        },
        geo: {
          colorScale: {
            display: true,
          },
        },
      }
    });
  });

image

from chartjs-chart-geo.

sgratzl avatar sgratzl commented on May 21, 2024

could be rewritten to

let mycontrylist = [{counry: 'India',count:10},{counry:'South Korea',count:15},{counry:'Vietnam',count:8}];

const lookup = new Map(mycontrylist.map((d) => [d.counry, d.count]));

const display_list = countries.map((element) => {
 return {
     feature: element,
     value: lookup.get(element.properties.name) || 0,
  };
});

from chartjs-chart-geo.

anand-010 avatar anand-010 commented on May 21, 2024

Thank you for your help Mr Samuel Gratzl.
It's working.
I am closing this issue with a smiling face.

from chartjs-chart-geo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.