Visualizing Data: Scalable Interactivity



Similar documents
Interactive Visualization

Programming 3D Applications with HTML5 and WebGL

Interactive Data Visualization for the Web Scott Murray

Vector Web Mapping Past, Present and Future. Jing Wang MRF Geosystems Corporation

Introduction to Computer Graphics

Interactive visualization of big data

Web Based 3D Visualization for COMSOL Multiphysics

Raising the Bar (Chart)

Lab 2: Visualization with d3.js

How To Create Superpath In Gta (Gta 3) And Gta 4.5 (Gts) (Gt3.5) (Geo 3.3) (Html) (Sv

Data Visualization. Scientific Principles, Design Choices and Implementation in LabKey. Cory Nathe Software Engineer, LabKey

MMGD0203 Multimedia Design MMGD0203 MULTIMEDIA DESIGN. Chapter 3 Graphics and Animations

A Hybrid Visualization System for Molecular Models

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys

Data Visualization. Principles and Practice. Second Edition. Alexandru Telea

B2.53-R3: COMPUTER GRAPHICS. NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions.

Introduction to D3.js Interactive Data Visualization in the Web Browser

TABLE OF CONTENTS. INTRODUCTION... 5 Advance Concrete... 5 Where to find information?... 6 INSTALLATION... 7 STARTING ADVANCE CONCRETE...

THE SAS OUTPUT DELIVERY SYSTEM: BOLDLY TAKE YOUR WEB PAGES WHERE THEY HAVE NEVER GONE BEFORE! CHEVELL PARKER, SAS INSTITUTE INC.

THE SOFTWARE EXPERTS Cross-Platform app development with PhoneGap, TypeScript and SVG

Assignment 5: Visualization

Developer Tutorial Version 1. 0 February 2015

Portal Connector Fields and Widgets Technical Documentation

Basic tutorial for Dreamweaver CS5

Visualization of Semantic Windows with SciDB Integration

Printing Guide. MapInfo Pro Version Contents:

MA 323 Geometric Modelling Course Notes: Day 02 Model Construction Problem

Working With Animation: Introduction to Flash

Visualizing a Neo4j Graph Database with KeyLines

MapInfo Professional Version Printing Guide

Performance Optimization and Debug Tools for mobile games with PlayCanvas

Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

MDS. Measured Data Server Online Measurement Network. Properties and Benefits »»» »»»» ProduCt information

Leveraging Image Services in JavaScript/HTML5 Applications. Wenxue Ju, Hong Xu

Research on HTML5 in Web Development

Why are we teaching you VisIt?

NASSI-SCHNEIDERMAN DIAGRAM IN HTML BASED ON AML

4/25/2016 C. M. Boyd, Practical Data Visualization with JavaScript Talk Handout

KaleidaGraph Quick Start Guide

Visualization of 2D Domains

Information Literacy Program

Advanced Rendering for Engineering & Styling

YouthQuest Quick Key FOB Project

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

How To Make A Texture Map Work Better On A Computer Graphics Card (Or Mac)

Plotting: Customizing the Graph

Enterprise Web Developer : Using the Emprise Javascript Charting Widgets.

Visualization. For Novices. ( Ted Hall ) University of Michigan 3D Lab Digital Media Commons, Library

Introduction... Learn to insert event sounds and streaming sounds and to change the effects for a sound... 69

PERFORMANCE OF BÉZIER CURVES RENDERING IN WEB BROWSERS

User Guide. idraw for Mac OS X v2.5.1

GUI GRAPHICS AND USER INTERFACES. Welcome to GUI! Mechanics. Mihail Gaianu 26/02/2014 1

STATGRAPHICS Online. Statistical Analysis and Data Visualization System. Revised 6/21/2012. Copyright 2012 by StatPoint Technologies, Inc.

Introduction to Computer Graphics

Silverlight for Windows Embedded Graphics and Rendering Pipeline 1

Remote Graphical Visualization of Large Interactive Spatial Data

H.Calculating Normal Vectors

Power Tools for Pivotal Tracker

JavaFX Session Agenda

CSE 564: Visualization. GPU Programming (First Steps) GPU Generations. Klaus Mueller. Computer Science Department Stony Brook University

IDL. Get the answers you need from your data. IDL

Visualization with ParaView. Greg Johnson

How To Develop Software

Visualizing an OrientDB Graph Database with KeyLines

SAS BI Dashboard 3.1. User s Guide

Create interactive web graphics out of your SAS or R datasets

HTML5 Data Visualization and Manipulation Tool Colorado School of Mines Field Session Summer 2013

Logo Design Studio Pro Guide

Using HTML5 Pack for ADOBE ILLUSTRATOR CS5

WP Popup Magic User Guide

Simply type the id# in the search mechanism of ACS Skills Online to access the learning assets outlined below.

COMP-557: Fundamentals of Computer Graphics McGill University, Fall 2010

Lab 3. GIS Data Entry and Editing.

Composite Surfaces Tutorial

TIBCO Spotfire Business Author Essentials Quick Reference Guide. Table of contents:

Galaxy Morphological Classification

NVIDIA IndeX Enabling Interactive and Scalable Visualization for Large Data Marc Nienhaus, NVIDIA IndeX Engineering Manager and Chief Architect

Surface and Volumetric Data Rendering and Visualization

SAS BI Dashboard 4.3. User's Guide. SAS Documentation

Today's Topics. COMP 388/441: Human-Computer Interaction. simple 2D plotting. 1D techniques. Ancient plotting techniques. Data Visualization:

CMSC 427 Computer Graphics Programming Assignment 1: Introduction to OpenGL and C++ Due Date: 11:59 PM, Sept. 15, 2015

IE Class Web Design Curriculum

L20: GPU Architecture and Models

Open Source Open Possibilities. Vellamo. System Level Benchmarking October Open Source Open Possibilities PAGE 1

Real World D3.JS. John Hammer. This book is for sale at This version was published on

Fireworks CS4 Tutorial Part 1: Intro

Course Overview. CSCI 480 Computer Graphics Lecture 1. Administrative Issues Modeling Animation Rendering OpenGL Programming [Angel Ch.

Data Visualization Study at Earth Simulator Center

Pro/ENGINEER Wildfire 4.0 Basic Design

JavaScript Programming

Graphic Design Studio Guide

Transcription:

Visualizing Data: Scalable Interactivity The best data visualizations illustrate hidden information and structure contained in a data set. As access to large data sets has grown, so has the need for interactive and scalable solutions which connect computer science, mathematics, and industry. Plotly is an online data visualization tool designed to quickly render graphs in web browsers. Our user base comprises of a wide variety of clients from industry and scientific labs. As our clients have access to larger data sets, demand is growing to enable the rendering of huge two dimensional plots. Our primary goal for this workshop is to find an executable solution that will allow us to improve our rendering to allow data sets of up to 1 million elements, while preserving interactive and exportable features that our clients expect. Current technology utilized by Plotly s graphing tools: Plotly currently utilizes two methods for rendering graphics. For two dimensional plots, we use D3.js, a JavaScript graphing library that utilizes SVG (scalable vector graphics). Our three dimensional plots are rendered using WebGL, a low level graphics API that uses GPUs directly for extremely fast rendering. Benchmarks: Our tool renders approximately 100,000 points in the browser using SVG, however, interactivity begins to slow around 30,000 points. A more comprehensive list of current benchmarks can be found at: https://plot.ly/benchmarks/

SVG is a vector markup language for describing two dimensional graphics. Graphics are drawn based upon a list of SVG elements, which are essentially polygons/spline curves with associated drawing commands. For example the element <circle cx= 150 cy= 100 r= 80 fill= red /> is an SVG element that describes a circle with red fill, with given x and y coordinates, and given radius, r. SVG draws the elements in the order that they appear in the list. Example: To produce the image We use the code: <svg version="1.1" baseprofile="full" width="300" height="200" xmlns="http://www.w3.org/2000/svg"> <rect width="100%" height="100%" fill="grey" /> <circle cx="150" cy="100" r="12" fill="red" /> <circle cx="120" cy="100" r="12" fill="blue" /> <circle cx="110" cy="100" r="12" fill="green" /> </svg> Because every SVG element is drawn, complicated SVG files take longer to render. For Plotly, this means that to draw a scatter plot with 300,000 points, each point of the scatter plot is an SVG element. There are several important benefits to SVG, from which Plotly benefits: First Plotly graphs take advantage of the graphing library D3.js, which is highly developed and offers many interactive options. Second, SVG renders on any device, is very stable, is resolution independent and supports fast development. There are some disadvantages to SVG, most notably the drawing complicated images is slow for plots with many points. Similarly updating these figures during user interactions is time consuming. WebGL is a low level graphics API that uses GPUs directly for extremely fast rendering. It is based on OpenGL, but is designed for the web. To render an image in WebGL, functions send data to your GPU for processing, and images are drawn on top of a canvas element. Shapes are created by scripts that contain vertex and fragment shaders, that assign colors to each pixel contained in the shape.

WebGL is fast, offers high performance rendering, good interactivity and excellent control. On the other hand, development is expensive (it takes more time to develop features than in SVG), and support is limited. Also it is not as well suited as SVG for generating archival figures, as WebGL renderings are resolution dependent. Server side: In addition to drawing considerations (whether using SVG or WebGL), our solution will likely require thought about how Plotly stores plots, and how stored data is downloaded to the browser. Specifically, we require an efficient way to store and retrieve data server side based on a plot viewport. Goals: Initial goals for this project involve finding graphing solutions for two dimensional scatter plots and line graphs for data sets of around 1 million points. In the short term, we would like this solution to be implemented using SVG. The outline of a solution may look something like the following: 1. An efficient way to store and retrieve data server side based on a plot viewport. 2. A way to decide on the server which points should be sent to the client, so that the plot looks effectively just as it would if you plotted everything. 3. The client will then query the server on zoom/pan events to update the data. In the longer term, we expect that WebGL will be an important component of our 2D graphing library. Important considerations: It is essential that we maintain existing features. In particular, users must be able to highlight individual points (this is done by hovering your mouse over a point in your plot). We also need to preserve advances styling features like custom glyphs, colors, sizes, borders, etc. Performance constraints: Allow at most O(n polylog(n)) steps during preprocessing, where n is the number of data points. Storage of at most O(n) points. Algorithms must be simple enough to allow implementation in a reasonable amount of time in order to be cost effective.

Problems: Scatter plots: Definition: Given a set of n vectors in 2D, and a shape S (which we call the marker), a scatter plot is the image formed by the union of n copies of S translated by each vector. 1. SVG: Given a scatter plot with circular markers, find the curve consisting of the minimal number of circular arc segments representing the boundary of the scatter plot. Motivation: How can we reduce the number of curves that need to be rendered, while preserving the exact image of the plot? Variants: a. Warm up: Suppose that the marker shape is a circle with constant radius. b. Allow the radii of the markers to vary. c. Allow the marker shape to vary (crosses, stars, etc.). d. Allow the marker colors to vary. e. Allow the markers to have borders of different colors f. Suppose the markers are partially transparent. It is possible to compute a minimal set of arcs which will render correct opacity? 2. WebGL: We have the following general questions to investigate: a. How should we support prioritized/progressive loading? b. What is the best way to implement user interactivity and selections? c. How should transparent shapes be handled? Line plots: Definition: A line plot is a piecewise linear curve. Note: We currently use a min/max decimation algorithm that gives us better performance than scatter plots. 1. SVG Motivation: How can we reduce the number of elements that need to be rendered, while preserving the exact image of the plot? a. Warm up: Filter a curve by removing nearby points. b. Suppose a line plot has dense regions. How can lines be replaced by polygons?

c. In using decimation algorithms, how can support of hovering, line colors, widths, etc. be preserved? 2. WebGL: a. How can streaming graphs be implemented? b. How should we support prioritized/progressive loading?