Raising the Bar (Chart)



Similar documents
CSE Data Visualization. Visualization Tools. Jeffrey Heer University of Washington

d3.js Data-Driven Documents Scott Murray, Jerome Cukier & Jeffrey Heer VisWeek 2012 Tutorial

Visualizing Data: Scalable Interactivity

Interactive Visualization

Lab 2: Visualization with d3.js

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

JavaFX Session Agenda

Assignment 5: Visualization

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

TDAQ Analytics Dashboard

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

JavaScript and jquery for Data Analysis and Visualization

Visualizing a Neo4j Graph Database with KeyLines

Research on HTML5 in Web Development

Client Overview. Engagement Situation. Key Requirements

D3.JS: Data-Driven Documents

Visualizing an OrientDB Graph Database with KeyLines

Cloud-based Log Analysis and Visualization

How To Write A Web Server In Javascript

Developer Tutorial Version 1. 0 February 2015

OpenText Information Hub (ihub) 3.1 and 3.1.1

SelectSurvey.NET Developers Manual

An Introduction to KeyLines and Network Visualization

Create interactive web graphics out of your SAS or R datasets

Sisense. Product Highlights.

NakeDB: Database Schema Visualization

Course Information Course Number: IWT 1229 Course Name: Web Development and Design Foundation

Visualization of Real Time Data Driven Systems using D3 Visualization Technique

Software Requirements Specification For Real Estate Web Site

ORACLE APPLICATION EXPRESS 5.0

Visualizing the Top 400 Universities

Multi-Dimensional Data Visualization. Slides courtesy of Chris North

Web-based Information Visualization Using JavaScript. Selin Guldamlasioglu

Big Data in Pictures: Data Visualization

Visualizing MongoDB Objects in Concept and Practice

AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev

Programming in HTML5 with JavaScript and CSS3

SAS BI Dashboard 3.1. User s Guide

Power Tools for Pivotal Tracker

What s new in TIBCO Spotfire 6.5

JavaScript Programming

Skills for Employment Investment Project (SEIP)

Project Plan Log Monitoring Compliance

Mobile Technique and Features

IBM WebSphere Business Monitor, Version 6.1

ArcGIS Server mashups

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

Microsoft Visio 2010 Top 10 Benefits

Web Based 3D Visualization for COMSOL Multiphysics

Learning HTML5 Game Programming

Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence

Kyubit Business Intelligence OLAP analysis - User Manual

Making the Most of Existing Public Web Development Frameworks WEB04

Getting more out of Matplotlib with GR

Creating and Configuring a Custom Visualization Component

ACEYUS REPORTING. Aceyus Intelligence Executive Summary

Visualization Software

Programming 3D Applications with HTML5 and WebGL

WebSphere Business Monitor V6.2 Business space dashboards

Art of Code Front-end Web Development Training Program

Introduction to Tizen SDK Alpha. Taiho Choi Samsung Electronics

Interactive HTML Reporting Using D3 Naushad Pasha Puliyambalath Ph.D., Nationwide Insurance, Columbus, OH

Upgrade to Microsoft Web Applications

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

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

Actuate Business Intelligence and Reporting Tools (BIRT)

HTML5 : carrier grade

Impress Funders and Make Mission and Message Clear: Easy Data Visualization and Infographics. May 10,

Interactive Graphic Design Using Automatic Presentation Knowledge

ORACLE BUSINESS INTELLIGENCE WORKSHOP

MOC 20488B: Developing Microsoft SharePoint Server 2013 Core Solutions

Tableau Server Scalability Explained

Introduction to WebGL

TOOLS, TIPS & RESOURCES

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

Adding 3rd-Party Visualizations to OBIEE Kevin McGinley

Front-End Performance Testing and Optimization

How is it helping? PragmatiQa XOData : Overview with an Example. P a g e Doc Version : 1.3

ICE Trade Vault. Public User & Technology Guide June 6, 2014

Macromedia Dreamweaver 8 Developer Certification Examination Specification

WHAT'S NEW IN SHAREPOINT 2013 WEB CONTENT MANAGEMENT

Why HTML5 Tests the Limits of Automated Testing Solutions

ORACLE BUSINESS INTELLIGENCE WORKSHOP

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

WebSphere Business Monitor V6.2 KPI history and prediction lab

<Insert Picture Here> Java, the language for the future

Transcription:

Raising the Bar (Chart) THE NEXT GENERATION OF VISUALIZATION TOOLS Jeffrey Heer @jeffrey_heer Univ. of Washington + Trifacta

?

Visualizing Big Data!

Stratified Sampling

Binned Aggregation

immens: Real-Time Visual Querying of Big Data with Z. Liu & B. Jiang

immens - Real-time Querying of Big Data Full Data Cube Σ Σ Σ Σ SERVER with Z. Liu, B. Jiang [EuroVis 13]

immens - Real-time Querying of Big Data Full Data Cube Σ Σ Σ Σ SERVER σ WEB BROWSER Σ with Z. Liu, B. Jiang [EuroVis 13]

immens - Real-time Querying of Big Data Full Data Cube Σ Σ Σ Σ SERVER σ WEB BROWSER Σ 50 fps interactive querying of summary visualizations of billions of data points. with Z. Liu, B. Jiang [EuroVis 13]

WebGL!

Perception!

Position 1 Position 2 Position 3 Length 1 Length 2 Angle Area (Circular) Area (Rect 1) Area (Rect 2) Log Absolute Estimation Error Graphical Perception [CHI 09, CHI 10, InfoVis 10 ] Experiments to assess the effectiveness of visual encodings.

Cognitive Color Models [CHI 12, EuroVis 13] Novel measures informing color-concept maps & palette design.

???

Visualization Tools

Raising the Bar (Chart) THE NEXT GENERATION OF VISUALIZATION TOOLS Jeffrey Heer @jeffrey_heer Univ. of Washington + Trifacta

How might we create visualizations?

ggplot(diamonds, aes(x=price, fill=cut)) + geom_bar(position="dodge")

ggplot(diamonds, aes(x=price, fill=cut)) + geom_bar(position="dodge")

Graphics APIs Processing, OpenGL, Java2D

Component Architectures Prefuse, Flare, Improvise, VTK Graphics APIs Processing, OpenGL, Java2D

Chart Typologies Excel, Many Eyes, Google Charts Component Architectures Prefuse, Flare, Improvise, VTK Graphics APIs Processing, OpenGL, Java2D

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Component Architectures Prefuse, Flare, Improvise, VTK Graphics APIs Processing, OpenGL, Java2D

Ease-of-Use Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Component Architectures Prefuse, Flare, Improvise, VTK Graphics APIs Processing, OpenGL, Java2D Expressiveness

Ease-of-Use Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Visualization Grammars Protovis, D3.js Component Architectures Prefuse, Flare, Improvise, VTK Graphics APIs Processing, OpenGL, Java2D Expressiveness

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Visualization Grammars Protovis, D3.js Component Architectures Prefuse, Flare, Improvise, VTK Charting Tools Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Visualization Grammars Protovis, D3.js Component Architectures Prefuse, Flare, Improvise, VTK Charting Tools Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

What is a Declarative Language?

What is a Declarative Language? Programming by describing what, not how

What is a Declarative Language? Programming by describing what, not how Separate specification (what you want) from execution (how it should be computed)

What is a Declarative Language? Programming by describing what, not how Separate specification (what you want) from execution (how it should be computed) In contrast to imperative programming, where you must give explicit steps.

What is a Declarative Language? Programming by describing what, not how Separate specification (what you want) from execution (how it should be computed) In contrast to imperative programming, where you must give explicit steps. d3.selectall("rect").data(my_data).enter().append("rect").attr("x", function(d) { return xscale(d.foo); }).attr("y", function(d) { return yscale(d.bar); })

Table SELECT customer_id, customer_name, COUNT(order_id) as total FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id GROUP BY customer_id, customer_nam HAVING COUNT(order_id) > 5 ORDER BY COUNT(order_id) DESC HTML / CSS SQL

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2 Visualization Grammars Protovis, D3.js Component Architectures Prefuse, Flare, Improvise, VTK Charting Tools Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2, Vegalite Visualization Grammars Protovis, D3.js, Vega Component Architectures Prefuse, Flare, Improvise, VTK Charting Tools Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Why Declarative Languages?

Why Declarative Languages? Faster iteration. Less code. Larger user base.

Why Declarative Languages? Faster iteration. Less code. Larger user base. Better visualization. Smart defaults.

Why Declarative Languages? Faster iteration. Less code. Larger user base. Better visualization. Smart defaults. Reuse. Write-once, then re-apply.

Why Declarative Languages? Faster iteration. Less code. Larger user base. Better visualization. Smart defaults. Reuse. Write-once, then re-apply. Performance. Optimization, scalability.

Why Declarative Languages? Faster iteration. Less code. Larger user base. Better visualization. Smart defaults. Reuse. Write-once, then re-apply. Performance. Optimization, scalability. Portability. Multiple devices, renderers, inputs.

Why Declarative Languages? Faster iteration. Less code. Larger user base. Better visualization. Smart defaults. Reuse. Write-once, then re-apply. Performance. Optimization, scalability. Portability. Multiple devices, renderers, inputs. Programmatic generation. Write programs which output visualizations. Automated search & recommendation.

Chart Typologies Excel, Many Eyes, Google Charts Visual Analysis Grammars VizQL, ggplot2, Vegalite Visualization Grammars Protovis, D3.js, Vega Component Architectures Prefuse, Flare, Improvise, VTK Charting Tools Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Chart Typologies Excel, Many Eyes, Google Charts?! Charting Tools Visual Analysis Grammars VizQL, ggplot2, Vegalite Visualization Grammars Protovis, D3.js, Vega Component Architectures Prefuse, Flare, Improvise, VTK Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Visual Analysis Grammars VizQL, ggplot2, Vegalite Visualization Grammars Protovis, D3.js, Vega Component Architectures Prefuse, Flare, Improvise, VTK Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Interactive Data Exploration Tableau, Lyra, Polestar, Voyager Visual Analysis Grammars VizQL, ggplot2, Vegalite Visualization Grammars Protovis, D3.js, Vega Component Architectures Prefuse, Flare, Improvise, VTK Graphical Interfaces Declarative Languages Programming Toolkits Graphics APIs Processing, OpenGL, Java2D

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Visualization Grammar

Visualization Grammar Data Input data to visualize

Visualization Grammar Data Transforms Input data to visualize Grouping, stats, projection, layout

Visualization Grammar Data Transforms Scales Input data to visualize Grouping, stats, projection, layout Map data values to visual values

Visualization Grammar Data Transforms Scales Guides Input data to visualize Grouping, stats, projection, layout Map data values to visual values Axes & legends visualize scales

Visualization Grammar Data Transforms Scales Guides Marks Input data to visualize Grouping, stats, projection, layout Map data values to visual values Axes & legends visualize scales Data-representative graphics Area Rect Symbol Image Line Text Rule Arc

Area Rect Symbol Image Line Text Rule Arc MARKS: Graphical Primitives

{ } "width": 400, "height": 200, "data": [ {"name": "table", "url": "/data/sample.json"} ], "scales": [ { "name": "x","type": "ordinal", "range": "width", "domain": {"data": "table", "field": "x"} }, { "name": "y", "range": height", "nice": true, "domain": {"data": "table", "field": "y"} } ], "axes": [ {"type": "x", "scale": "x"}, {"type": "y", "scale": "y"} ], "marks": [{ "type": "rect", "from": {"data": "table"}, "properties": { "enter": { "x": {"scale": "x", "field": "x"}, "width": {"scale": "x", "band": true, "offset": -1}, "y": {"scale": "y", "field": "y"}, "y2": {"scale": "y", "value": 0}, "fill": {"value": "steelblue"} } } }]

{ } "width": 400, "height": 200, "data": [ {"name": "table", "url": "/data/sample.json"} ], "scales": [ { "name": "x","type": "ordinal", "range": "width", "domain": {"data": "table", "field": "x"} }, { "name": "y", "range": height", "nice": true, "domain": {"data": "table", "field": "y"} } ], "axes": [ {"type": "x", "scale": "x"}, {"type": "y", "scale": "y"} ], "marks": [{ "type": "rect", "from": {"data": "table"}, "properties": { "enter": { "x": {"scale": "x", "field": "x"}, "width": {"scale": "x", "band": true, "offset": -1}, "y": {"scale": "y", "field": "y"}, "y2": {"scale": "y", "value": 0}, "fill": {"value": "steelblue"} } } }] Data + Transforms

{ } "width": 400, "height": 200, "data": [ {"name": "table", "url": "/data/sample.json"} ], "scales": [ { "name": "x","type": "ordinal", "range": "width", "domain": {"data": "table", "field": "x"} }, { "name": "y", "range": height", "nice": true, "domain": {"data": "table", "field": "y"} } ], "axes": [ {"type": "x", "scale": "x"}, {"type": "y", "scale": "y"} ], "marks": [{ "type": "rect", "from": {"data": "table"}, "properties": { "enter": { "x": {"scale": "x", "field": "x"}, "width": {"scale": "x", "band": true, "offset": -1}, "y": {"scale": "y", "field": "y"}, "y2": {"scale": "y", "value": 0}, "fill": {"value": "steelblue"} } } }] Data + Transforms Scales

{ } "width": 400, "height": 200, "data": [ {"name": "table", "url": "/data/sample.json"} ], "scales": [ { "name": "x","type": "ordinal", "range": "width", "domain": {"data": "table", "field": "x"} }, { "name": "y", "range": height", "nice": true, "domain": {"data": "table", "field": "y"} } ], "axes": [ {"type": "x", "scale": "x"}, {"type": "y", "scale": "y"} ], "marks": [{ "type": "rect", "from": {"data": "table"}, "properties": { "enter": { "x": {"scale": "x", "field": "x"}, "width": {"scale": "x", "band": true, "offset": -1}, "y": {"scale": "y", "field": "y"}, "y2": {"scale": "y", "value": 0}, "fill": {"value": "steelblue"} } } }] Data + Transforms Scales Guides

{ } "width": 400, "height": 200, "data": [ {"name": "table", "url": "/data/sample.json"} ], "scales": [ { "name": "x","type": "ordinal", "range": "width", "domain": {"data": "table", "field": "x"} }, { "name": "y", "range": height", "nice": true, "domain": {"data": "table", "field": "y"} } ], "axes": [ {"type": "x", "scale": "x"}, {"type": "y", "scale": "y"} ], "marks": [{ } }] "type": "rect", "from": {"data": "table"}, "properties": { "enter": { "x": {"scale": "x", "field": "x"}, } (Data + Transforms) "width": {"scale": "x", "band": true, "offset": -1}, "y": {"scale": "y", "field": "y"}, "y2": {"scale": "y", "value": 0}, "fill": {"value": "steelblue"} Data + Transforms Scales Guides Marks

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Lyra Vega D3.js JavaScript SVG Canvas

idl.cs.washington.edu/projects/lyra

Lyra A Visualization Design Environment Driving Shifts into Reverse by Hannah Fairfield, NYTimes

Lyra A Visualization Design Environment by William Playfair

Lyra A Visualization Design Environment based on the Railway Timetable by E. J. Marey

Lyra Vega D3.js JavaScript SVG Canvas

Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Vegalite A formal model for statistical graphics Inspired by Grammar of Graphics & Tableau Includes data transformation & encoding

Vegalite A formal model for statistical graphics Inspired by Grammar of Graphics & Tableau Includes data transformation & encoding Uses a simple, concise JSON format that compiles to full-blown Vega specifications Easy programmatic generation!

{ } "marktype": "point", "enc": { "x": {"name":"horse_power", "type":"q"}, "y": {"name":"miles_per_gallon", "type":"q"} }

{ } "marktype": "point", "enc": { "x": {"name":"horse_power", "type":"q"}, "y": {"name":"miles_per_gallon", "type":"q"}, "color": {"name":"cylinders", "type":"o"} }

{ } "marktype": "point", "enc": { "x": {"name":"horse_power", "type":"q"}, "y": {"name":"miles_per_gallon", "type":"q"}, "col": {"name":"cylinders", "type":"o"} }

{ } "marktype": "point", "enc": { "x": {"name":"horse_power", "type":"q"}, "y": {"name":"miles_per_gallon", "type":"q"} }

{ } "marktype": "point", "enc": { "x": {"name":"horse_power", "type":"q", "bin":{"maxbins":15}}, "y": {"name":"miles_per_gallon", "type":"q", "bin":{"maxbins":15}}, "size": {"name":"*", "type":"q", "aggr":"count"} }

Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Polestar A graphical interface for Vegalite Rapid visualization via drag-and-drop Named in honor of Polaris, the research project that led to Tableau.

Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Reduce tedious manual specification

Voyager Reduce tedious manual specification Support early-stage data exploration Encourage data coverage Discourage premature fixation

Voyager Reduce tedious manual specification Support early-stage data exploration Encourage data coverage Discourage premature fixation Approach: browse a gallery of visualizations

Voyager Reduce tedious manual specification Support early-stage data exploration Encourage data coverage Discourage premature fixation Approach: browse a gallery of visualizations Challenge - combinatorial explosion!

Voyager Reduce tedious manual specification Support early-stage data exploration Encourage data coverage Discourage premature fixation Approach: browse a gallery of visualizations Challenge - combinatorial explosion! Automatic recommendation of useful views + end-user steering to focus exploration

User

Data Set Voyager Visualization Browser User

Compass Recommendation Engine Data Schema & Statistics Voyager Visualization Browser User

1. Select data variables 2. Apply transformations 3. Pick visual encodings Compass Recommendation Engine Data Schema & Statistics Voyager Visualization Browser User

Constrain & rank choices by data type, statistics & perceptual principles. Compass Recommendation Engine Data Schema & Statistics Voyager Visualization Browser User

Compass Recommendation Engine Data Schema & Statistics Ranked and Clustered Vegalite Specifications Voyager Visualization Browser User

Compass Recommendation Engine Data Schema & Statistics Ranked and Clustered Vegalite Specifications Voyager Visualization Browser User Vegalite Specifications Vegalite Compiler

Compass Recommendation Engine Data Schema & Statistics Ranked and Clustered Vegalite Specifications Voyager Visualization Browser User Vegalite Specifications Vega Renderer Vega Specifications Vegalite Compiler

Compass Recommendation Engine Data Schema & Statistics Ranked and Clustered Vegalite Specifications Voyager Visualization Browser User Interactive Visualizations Vegalite Specifications Vega Renderer Vega Specifications Vegalite Compiler

Compass Recommendation Engine Data Schema & Statistics Ranked and Clustered Vegalite Specifications User Interactive Visualizations Voyager Visualization Browser Interactive Visualizations Vegalite Specifications Vega Renderer Vega Specifications Vegalite Compiler

Compass Recommendation Engine User User Selection Interactive Visualizations User Selection, Data Schema & Statistics Voyager Visualization Browser Interactive Visualizations Ranked and Clustered Vegalite Specifications Vegalite Specifications Vega Renderer Vega Specifications Vegalite Compiler

Improves data coverage! +3x variable sets shown +1.5x more interacted with Compass Recommendation Engine User User Selection Interactive Visualizations User Selection, Data Schema & Statistics Voyager Visualization Browser Interactive Visualizations Ranked and Clustered Vegalite Specifications Vegalite Specifications Vega Renderer Vega Specifications Vegalite Compiler

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

One last thing

What about interaction?

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Event Streams mousedown mouseup,... Signals brush_start brush_end Scale Inversions -x -y -x -y Predicates inside_brush Circle Mark rule fill red green blue inside_brush fill grey Reactive Vega Satyanarayan et al. [UIST 14]

Event Streams mousedown mouseup,... Signals brush_start brush_end Scale Inversions -x -y -x -y Predicates inside_brush Circle Mark rule fill red green blue inside_brush fill grey Key Insight: Treat user input as first-class streaming data Adapt methods from functional reactive programming

Vega 2.0 ( Reactive Vega ) Single declarative model for specifying visual encodings + interaction techniques

Vega 2.0 ( Reactive Vega ) Single declarative model for specifying visual encodings + interaction techniques JSON > Reactive Dataflow Graph Designed ground-up for streaming data Performance matches or exceeds D3

Vega 2.0 ( Reactive Vega ) Single declarative model for specifying visual encodings + interaction techniques JSON > Reactive Dataflow Graph Designed ground-up for streaming data Performance matches or exceeds D3 Portable Client (browser) or server-side (node.js) Pick your renderer: Canvas, SVG, Pick your input: mouse, touch,

DimpVis Kondo et al. [InfoVis 14]

Voyager Polestar Lyra Vegalite Vega D3.js JavaScript SVG Canvas

Open Challenges Designing interactions interactively How to convey + depict interactions? Enhancing the gallery experience Rapid assessment of multiple graphics Embedding large views in small spaces? Improving visualization recommenders Learning from users, domain adaptation

Open Challenges Designing interactions interactively How to convey + depict interactions? Enhancing the gallery experience Rapid assessment of multiple graphics Embedding large views in small spaces? Improving visualization recommenders Learning from users, domain adaptation Debugging, debugging, debugging

All Open Source

vega.github.io

Raising the Bar (Chart) THE NEXT GENERATION OF VISUALIZATION TOOLS Jeffrey Heer @jeffrey_heer http://vega.github.io/