{"id":19335112,"url":"https://github.com/data2viz/data2viz","last_synced_at":"2025-04-15T01:59:14.497Z","repository":{"id":45290977,"uuid":"89368762","full_name":"data2viz/data2viz","owner":"data2viz","description":"An Android, JavaFx, JS multiplatform datavisualization library with comprehensive DSL","archived":false,"fork":false,"pushed_at":"2025-01-25T13:13:08.000Z","size":16540,"stargazers_count":417,"open_issues_count":80,"forks_count":30,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-15T01:58:48.646Z","etag":null,"topics":["data-visualization","dataviz","kotlin"],"latest_commit_sha":null,"homepage":"https://data2viz.io/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/data2viz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"Contributing.md","funding":null,"license":"license/LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-25T14:16:39.000Z","updated_at":"2025-03-17T03:24:45.000Z","dependencies_parsed_at":"2023-02-15T13:46:04.368Z","dependency_job_id":"b99f036d-5a4e-4fcb-897b-8ca8c2af09c1","html_url":"https://github.com/data2viz/data2viz","commit_stats":{"total_commits":2248,"total_committers":13,"mean_commits":"172.92307692307693","dds":"0.43149466192170816","last_synced_commit":"bc4ed872c526264727f868f5127e48462301dbf8"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data2viz%2Fdata2viz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data2viz%2Fdata2viz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data2viz%2Fdata2viz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data2viz%2Fdata2viz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/data2viz","download_url":"https://codeload.github.com/data2viz/data2viz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248991544,"owners_count":21194894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-visualization","dataviz","kotlin"],"created_at":"2024-11-10T03:05:23.175Z","updated_at":"2025-04-15T01:59:14.466Z","avatar_url":"https://github.com/data2viz.png","language":"Kotlin","readme":"\u003cimg src=\"http://data2viz.io/images/identity/d2v-logo-no-gradient-lg-no-marge@2.png\" alt=\"Data2viz\" width=\"604\" style=\"max-width:100%;\"\u003e\n\n![Build Status](https://img.shields.io/badge/version-0.10.7-blueviolet)\n[![GitHub License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)\n\n\n[![Build JS](https://img.shields.io/github/workflow/status/data2viz/data2viz/MPP%20Android%20build?label=Android)](https://github.com/data2viz/data2viz/actions/workflows/mpp-android.yaml)\n[![Build JS](https://img.shields.io/github/workflow/status/data2viz/data2viz/MPP%20iOS%20build?label=iOS)](https://github.com/data2viz/data2viz/actions/workflows/mpp-ios.yaml)\n[![Build JS](https://img.shields.io/github/workflow/status/data2viz/data2viz/MPP%20JS%20build?label=JS)](https://github.com/data2viz/data2viz/actions/workflows/mpp-js.yaml)\n[![Build JS](https://img.shields.io/github/workflow/status/data2viz/data2viz/MPP%20JavaFx%20build?label=JavaFX)](https://github.com/data2viz/data2viz/actions/workflows/mpp-javafx.yaml)\n\n# Isomorphic dataviz\n\nData2viz is a data visualization toolbox for Kotlin Multiplatform.\n\nYou can pick what you need in the different modules and use them independently in the following environments: Android, JavaScript(IR and Legacy), and JavaFX (iOS to come). \n\nYour code produces the same results and rendering on each platform.\n\nA lot of algorithms come from [d3js](https://github.com/d3/d3) modules.\n\n### [core](https://github.com/data2viz/data2viz/tree/master/core)\nThis module exposes some basics elements like Circle, Rect, Path, and also some parts of DSL (percent, angles, etc.).\n\n### [color](https://github.com/data2viz/data2viz/tree/master/color)\nThis module provides algorithms to create, modify, and convert colors through differents spaces (RGB, HCL, HSL, Lab). It also manage linear and radial color gradients. You can easily use it outside of data2viz. \n\n### [shape](https://github.com/data2viz/data2viz/tree/master/shape)\nAlgorithms to generate paths: symbols, curves, ...\n\n### [scale](https://github.com/data2viz/data2viz/tree/master/scale)\nDifferent ways to convert data to sizes.\n\n### [interpolate](https://github.com/data2viz/data2viz/tree/master/interpolate)\nFunctions to perform interpolation of various elements (numbers, colors, points, curves)\n\n### [random](https://github.com/data2viz/data2viz/tree/master/random)\nAlgorithms to generate random data.\n\n### [axis](https://github.com/data2viz/data2viz/tree/master/axis)\nHelper module to create axis for charts, using scales. \n\n### [delaunay](https://github.com/data2viz/data2viz/tree/master/delaunay)\nThis module is a high performant algorithm to compute the Voronoi diagram. You should use it in many use cases to find the closest point of interest to the pointer position. \n\n### [ease](https://github.com/data2viz/data2viz/tree/master/ease)\nThis module contains a collection of easing functions to manage acceleration inside animations.\n\n### [dsv](https://github.com/data2viz/data2viz/tree/master/dsv)\nMinimal way of parsing CSV, TSV files using Kotlin.\n\n### [force](https://github.com/data2viz/data2viz/tree/master/force)\nUse physics to animate your visualizations.\n\n### [format](https://github.com/data2viz/data2viz/tree/master/format)\nDifferent ways of formating numbers and currencies.\n\n### [time](https://github.com/data2viz/data2viz/tree/master/time)\nSome multiplatform classes to manage time and dates in visualizations.\n\n### [time-format](https://github.com/data2viz/data2viz/tree/master/time-format)\nExtend formatting to time and dates.\n\n### [quadtree](https://github.com/data2viz/data2viz/tree/master/quadtree)\nSeparation of space through the quadtree algorithm.\n\n### [voronoi](https://github.com/data2viz/data2viz/tree/master/voronoi)\nFortune's algorithm implementation of the Voronoi diagram. You should probably use Delaunay instead.\n\n### [geo](https://github.com/data2viz/data2viz/tree/master/geo)\nA collection of mechanisms and functions to project GeoJson elements (points, lines, polygons) on a screen using different implementations of projections.\n\n### [hexbin](https://github.com/data2viz/data2viz/tree/master/hexbin)\nA useful way of aggregating data using hexagons. You can represent data through the fill color or the area.\n\n### [sankey](https://github.com/data2viz/data2viz/tree/master/sankey)\nA generator for sankey charts.\n\n### [hierarchy](https://github.com/data2viz/data2viz/tree/master/hierarchy)\nA generator for hierarchical charts.\n\n### [tests](https://github.com/data2viz/data2viz/tree/master/tests)\nAn internal module used to simplify multiplatform testing with a higher DSL.\n\n### [timer](https://github.com/data2viz/data2viz/tree/master/timer)\nA multiplatform implementation to manage animations through shared frames.\n\n### [viz](https://github.com/data2viz/data2viz/tree/master/viz)\nMultiplatorm API and implementation of rendering and events management.\n\n\nData2viz allows you to develop data visualizations through a fully typed DSL. It simplifies the creation of complex\n visualizations via the IDE’s context-based suggestions.\n \n## Where should I start?\n\n### Documentation\n\nAll data2viz documentation is located in \n[a distinct documentation project](https://github.com/data2viz/data2viz-docs). \nYou should start there and follow \n[the first JavaFX tutorial](https://github.com/data2viz/data2viz-docs/blob/master/tutorials/barchart-jfx/javafx-bar-chart.md).\n\n### Data2viz Playground\n\nYou can also play with the API without installing anything. \n[Data2viz playground](https://play.data2viz.io/) is a website where \nyou can browse existing sample, modify them online and immediately \nsee the result. \n\n\n## Using in your projects\n\n\u003e Note that the library is experimental, and the API is subject to change.\n\nThe library is published to data2viz space repository.\n\n\n\n### Gradle\n\n- In multiplatform projects, add a dependency to the commonMain source set dependencies\n```kotlin\nkotlin {\n    sourceSets {\n        commonMain {\n             dependencies {\n                 implementation(\"io.data2viz.d2v:d2v-axis:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-chord:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-color:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-contour:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-delaunay:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-dsv:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-ease:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-force:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-format:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-geo:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-hexbin:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-hierarchy:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-quadtree:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-random:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-scale:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-shape:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-tile:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-time:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-timer:0.10.7\")\n                 implementation(\"io.data2viz.d2v:d2v-viz:0.10.7\")\n             }\n        }\n    }\n}\n```\n\n- To use the library in a single-platform project, add a dependency to the dependencies block.\n\n```groovy\ndependencies {\n    implementation(\"io.data2viz.d2v:d2v-axis:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-chord:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-color:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-contour:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-delaunay:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-dsv:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-ease:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-force:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-format:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-geo:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-hexbin:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-hierarchy:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-quadtree:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-random:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-scale:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-shape:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-tile:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-time:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-timer:0.10.7\")\n    implementation(\"io.data2viz.d2v:d2v-viz:0.10.7\")\n}\n```\n\n## Current status and roadmap\n\nAPIs are mostly stabilized now, but there may still be some breaking changes before v1.0.\n\n\n## Inspirations\n - [d3js](https://github.com/d3/d3): a lot of modules and algorithms come from d3js.\n - [paperjs](https://github.com/paperjs/paper.js): another source of inspiration for viz hierarchy and simple API.\n - [chromajs](https://github.com/gka/chroma.js): smart library for managing colors easily.\n - [delaunator](https://github.com/mapbox/delaunator): a really fast JavaScript library for Delaunay triangulation of 2D points.\n - [kotlinx.html](https://github.com/Kotlin/kotlinx.html): isomorphic html rendering.\n - [kotlintest](https://github.com/kotlintest/kotlintest): nice DSL for testing (partly ported in [test](tests)).\n \n","funding_links":[],"categories":["数据科学"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata2viz%2Fdata2viz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdata2viz%2Fdata2viz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata2viz%2Fdata2viz/lists"}