Giter Site home page Giter Site logo

altanastor / adit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from micahstubbs/adit

0.0 1.0 0.0 5.83 MB

๐ŸšชR & Shiny meet WebVR & A-Frame for data exploration like never before

License: GNU General Public License v3.0

HTML 0.15% R 0.29% JavaScript 99.57%

adit's Introduction

Adit: Enter the Data Mine

Adit is a tool for exploratory data analysis that brings together the R language for statistical computing and virtual reality via shiny and A-frame.

Preview image

Click for full video preview

Motivation

In the modern, data-rich world, analysts and data scientists seek to gain insights from data sets of ever-increasing complexity. A key step in the process is exploratory data analysis, getting to know the data and discovering variable relationships, yet current, 2-D technology limits the ability to visualize the relationships and interactions of many variables.

Adit opens the door to true 3-D data exploration with the HTC Vive. Stereo vision with positional tracking provide a link to human spatial understanding that cannot be imitated on the desktop monitor, and hand controls provide an intuitive experience. Together, these allow for rapid data exploration and insight discovery.

Current Status

With Adit, you can build and examine exploratory data visualizations interactively in VR. Upload a dataset or choose an example one. Build histograms, scatter plots, and 3-d scatter plots by dragging variable name cards and dropping them on the desired axes. You can also map data to shape, color, and size of the points in the plot by dropping variable name cards on the corresponding legends.

To examine the plot, grab it to move and rotate it with a controller. If you release it with a twist of the wrist, the plot will remain animated in a spin. You can also grab the plot with two hands to stretch or shrink it.

The Future

Since WebVR is already online, shared experiences are a natural addition so that colleagues from across the globe could join each other to explore data together. WebVR is also multi-platform, so colleagues or clients could join with mobile VR or even desktop monitors for you to show them what you've discovered.

Try Adit Now

You can experience Adit by visiting http://wmurphyrd.shinyapps.io/adit.

Requirements

Adit requires a complete VR system (rotational & positional tracking with hand controllers). With the recent release of A-Frame v0.4.0, Oculus Rift + Touch has joined the HTC Vive in offering this experience. I will be updating A-Frame to v0.4.0 in the near future.

WebVR is still experimental and only available in test versions of browsers. Due to a new issue with Chromium, currently only Firefox Nightly is available for the full desktop WebVR experience. Head on over to webvr.rocks for downloads and setup instructions.

Features and Updates

February 2, 2017

  • Added Firefox Nightly support

Original Release

  • File uploader control to provide your own data
  • Guides for color, shape, and size
    • View the current mappings to non-position aesthetics
    • Drag-and-drop data-frame-column onto the guide to update the mapping
  • 1-D and 2-D plots: when building a new plot from scratch, the Adit plot will show you the intermediate steps. Try changing the dataset selection to "mtcars" or "diamonds" to see this in action.
    • The first variable mapped will produce a dot-histogram showing the distribution of that variable (try it on the y and z axes, too!)
    • With two variables mapped, a 2-D scatter plot will display (centered on whichever the 3rd, unmapped axis is)
  • stretch component allows for two-handed grab and stretch of entities.
    • Efficient direct update of physics bodies to match scale
  • Scales for plots: added plot-axis-text component. This will be automatically added to a plot and label x, y, and z axes. Supports numeric labels and text labels for factors. Labels the name of the mapped variable as the scale title.
  • Performance improvements
    • Plot updates are queued and completed as time is available to avoid locking out the render thread
    • Plot points are updated rather than destroyed and recreated (and the updates are not accomplished with an animation)
    • New physics-collider component is drop-in replacement for sphere-collider that uses the physics engine's existing collision detection instead of calculating its own collisions
  • Interactive plot building: plots can now be built within Adit by dragging data columns onto the axes.
    • drag-drop component for controllers. Tells targets when they are hovered over and tells targets and carried entities when a successful drag-and-drop interaction occurs.
    • data-frame component receives data from shinyaframe aDataFrame widget and creates data-frame-column entities that can be dragged onto plot axes to update mapping
  • plot components
    • plot: contains plot-area, creates and manages x, y, and z plot-axis components
    • plot-axis: target for drag-drop, highlights when hovered
    • plot-area: receives data from shinyaframe aScatter3d widget and manages data point display
  • collision-filter component and system to easily manage collision groups (which objects have physics interactions with each other and which don't) via CANNON.js settings collisionFilterGroup and collisionFilterMask
  • sleepy component to utilize CANNON.js built-in sleepiness and control damping. In WebVR Chromium 56, this can cause dynamic-body entities to be obliterated. Can use v55 WebVR build instead.
    • With default settings, objects quickly come to rest after after release regardless of release velocity.
    • Changing angularDamping to 0 and increasing the speedLimit creates a situation where objects released with a twist will cease linear translation but maintain their rotational spin indefinitely
  • Using aframe-physics-system and aframe-extras from @donmccurdy for improved grabbing (rotation & position) via CANNON.js constraints

adit's People

Contributors

wmurphyrd avatar

Watchers

James Cloos avatar

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.