Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: geoflow-visualizer
  • License: apache-2.0
  • Language: JavaScript
  • Default Branch: main
  • Size: 59.5 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • Open Issues: 1
  • Releases: 1
Created about 4 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

DOI Build & deploy to github pages

Geoflow Visualizer

Visualizes any type of flow between countries. Takes a CSV as input, applies filtering and aggregation (danfojs) to show relations and data in a number of visualizations (d3.js)

Demo

The latest version of this tool is available at https://geoflow-visualizer.github.io/geoflow-visualizer/

Requirements

Nodejs + npm

Installation

npm install

Run

npm start

Usage

Use the file selector to select a CSV file that at least has the columns source, target and weight.

Development

In short, the application uses the React as the main framework, Danfo.js for data processing and filtering, and d3.js for visualization of the map and charts. Below is a more detailed overview of what can be found where.

Application

The main GUI is specified in App, which connects all the components to the data that is managed in the DataStore class (below).

Loading and filtering the data

The DataStore class is where all the loading and filtering happens. It largely relies on Danfo.js (a pandas clone for javascript) for this. The class a mobx observable, meaning that its computed properties can be observed in a component and it will re-render in a transparent way if the computed properties' inputs change.

Loading and filtering the data happens in several steps and only the required steps will execute if the inputs (such as the category selection) change. The steps are roughly as follows:

  • Load data - does some basic cleaning and filtering and splits the data into links to self and links to others.
  • Filtered data - applies the filters for sources, targets and other columns.
  • Aggregate per link - for showing on the network map
  • Aggregate per node (source/target) - for showing in the bar chart
  • Aggregate per year - for showing the time series.
  • Convert to nodes and links - converts to objects to be visualized in d3.js.
  • In addition there are some properties for row / link counts, used locations and categories.

Maps, countries, projections

The map and country data is loaded in the GeoData module. It is currently 'hard coded', i.e. cannot be specified by the user.

The world map is a topojson file: worldcountriesneocarto.json. The geometries are used to display the map and they are linked to the visualization by their ISO-2 country codes. The other properties are ignored.

The capital of each country is used as its location (the node the arrows point to/from). Country capital positions are linked to the user data by their ISO-2 country codes. The capital data is in country-capitals.json. This is also where the country names (labels) are from.

The current map projection is geoAitoff and is set in the components/mappings module.

Styling and colors of visualization

Some semi-constant data, such as color maps, projections and number formatting functions are defined in the components/mappings module.

The visualization of the map and its links are defined in components/LinkVis. Properties that are not defined in the mappings module can be customized there.

Owner

  • Name: Tracking and visualizing cross-border flows
  • Login: geoflow-visualizer
  • Kind: organization

Software written for a project by the University of Amsterdam and the Netherlands eScience Center

Citation (CITATION.CFF)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Geoflow Visualizer
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - orcid: 'https://orcid.org/0000-0002-6630-7326'
    given-names: Peter
    family-names: Kok
    affiliation: Netherlands eScience Center
  - orcid: 'https://orcid.org/0000-0002-6119-1790'
    given-names: Javier
    family-names: Garcia-Bernardo
    affiliation: Utrecht University & ODISSEI Social Data Science Team
  - orcid: 'https://orcid.org/0000-0002-9179-8120'
    given-names: Milan
    family-names: Babic
    affiliation: Roskilde University
repository-code: >-
  https://github.com/geoflow-visualizer/geoflow-visualizer
url: >-
  https://geoflow-visualizer.github.io/geoflow-visualizer/
abstract: >-
  Visualizes any type of flow between countries. Takes a CSV
  as input, applies filtering and aggregation to show
  relations and data in a number of visualizations.

GitHub Events

Total
Last Year

Dependencies

.github/workflows/main.yml actions
  • JamesIves/github-pages-deploy-action v4.3.0 composite
  • actions/checkout v3 composite
package-lock.json npm
  • 1250 dependencies
package.json npm
  • autoprefixer ^10.4.7 development
  • daisyui ^2.14.3 development
  • postcss ^8.4.13 development
  • tailwindcss ^3.0.24 development
  • @testing-library/jest-dom ^5.16.4
  • @testing-library/react ^13.2.0
  • @testing-library/user-event ^13.5.0
  • d3 ^7.4.4
  • d3-geo-projection ^4.0.0
  • danfojs ^1.1.1
  • mobx ^6.6.2
  • mobx-react-lite ^3.4.0
  • react ^18.1.0
  • react-dom ^18.1.0
  • react-scripts 5.0.1
  • topojson ^3.0.2
  • web-vitals ^2.1.4