Git Product home page Git Product logo

peter-gy / visrecly Goto Github PK

View Code? Open in Web Editor NEW
19.0 1.0 1.0 15.65 MB

📊 A task-based visualization recommendation app, aiming to be the Grammarly for stories written with charts. Built with draco and vega-lite.

Home Page: https://visrecly.vercel.app

TypeScript 97.52% JavaScript 2.34% CSS 0.12% Shell 0.02%
draco mui nx-workspace react recommendation-system tailwindcss typescript visrec visualization vega vega-lite visual-analysis monorepository webassembly task-oriented-visrec react-query weight-learning introjs clingo

visrecly's Introduction

VisRecly

VisRecly Demo

What Is This All About?

VisRecly is a task-based visualization-recommendation tool with the goal in mind to allow novice VIS users to create novel visualizations quickly for their dataset, solely by uploading it, then specifying what they would like to achieve with their data (e.g. correlate, find differences, cluster, etc.).

This idea and project were so interesting to me that I decided to make it the project for my Bachelor's Thesis at the CS department of Universität Wien. I enjoy the supervision of Torsten Möller and Manfred Klaffenböck.

You can read the full thesis here.

Decomposing the Project's Name and Ambitions

The first part, VisRec, stands for Visualization Recommendation, while the ly segment is a tribute to Grammarly (the grammar checker) which inspired me to jump into this project. As I exposed myself to formal, academic concepts of visualization and visual data analysis, I realized that a Grammarly-like tool for visualization would be beneficial to VIS novices.

There is an untold story behind every single set of data and visualizations provide great means to tell these stories. Yet, just as people do not enjoy written stories being full of grammar or spelling mistakes or being out of tone, they also do not enjoy looking at visualizations violating fundamental design guidelines or being out of context regarding the task at hand.

On the one hand, as Grammarly dictates grammar and spelling rules for writing, VisRecly aims at enforcing non-negotiable visualization design guidelines in its recommendations. On the other hand, just as Grammarly allows for recommending synonyms and alternative sentence structures based on the communication goals and target audience of the author, VisRecly attempts to help its users find the "tone" of their visualization by ranking recommendations across tasks and highlighting the most suitable ones.

Tech Overview

In an attempt to make this tool as intriguing and accessible as possible, I am building it with modern web technologies, such as:

  • React, Next.js
  • Material-UI, TailwindCSS
  • Pure TypeScript & WebAssembly

This monorepo is made up of the modules below:

  • libs/data: Houses example data sets and related utilities.
  • libs/draco: The core of the underlying recommendation engine, defining learning and visualization design guidelines as Answer Set Programming (ASP) problems. It is a custom fork of draco by UW Interactive Data Lab.
  • libs/draco-web: Custom web-API leveraging the core API introduced in libs/draco and clingo-wasm to solve ASP programs in the browser, eliminating the need for a server component.
  • libs/ranking: Defines the ranking algorithm and aggregator utilities, considering both data-oriented costs (obtained from libs/draco-web) and VIS-task-relevant preferences.
  • libs/vis-tasks: Defines the VIS tasks and their associated mark-preferences.
  • apps/dashboard: The actual client of the above modules, the dashboard that allows users to steer their desired tasks and marvel at the generated vega-lite-based visualizations.

Architectural Overview

visrecly-arch

  • (a) Input: accepts user input (apps/dashboard)
  • (b) Preprocess: prepare data schema (libs/draco)
  • (c) Generate: Solve ASP problems and produce Vega-Lite specifications (libs/draco-web)
  • (e) Rank: Compute recommendation costs and rank visualizations (libs/ranking)
  • (g) Output: Render the ranked visualizations (apps/dashboard)
  • (d) and (e) are knowledge sources for design guidelines and VIS tasks (libs/data, libs/vis-tasks)

Development

Make sure to install the monorepo dependencies.

npm install

Starting the Project Locally

npm run start

The dashboard should be running on localhost:4200.

Running Tests

Running what?

Tests are available for libs/draco. They can be executed by running:

npx nx test draco

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.