Visualization Programming: Libraries and Toolkits Class visualization resources CSCI 6361

Embed Size (px)

DESCRIPTION

About “Libraries” and “Toolkits” Which we’ll look at for visualization It is, of course, possible to program visual representations using just a language and its primitives for visualization –E.g., just c/c++, java, visual basic or c/c++ and opengl, java and jogl, etc. to create, e.g., graphs, trees, tables However, many of the same visual representations are used “often”, e.g., charts scatterplots, but not often enough to be a language primitive Libraries, or toolkits, provide a means to access these “often” used elements, focused on a domain –e.g., D3 and vtk for visualization, Qt for interface design Such “libraries” and “toolkits” are effectively another software layer –Some closer to the native language than others –Loosely stated, those “closer” to the native language are more flexible, but may trade off ease of use

Citation preview

Visualization Programming: Libraries and Toolkits Class visualization resources CSCI 6361 Visualization, Programming, and Interactive Systems For visualization, humans interact with computers primarily through displays In fact, lots of things going on that are part of the whole context of visualization, humans, and computing Human Interaction Style, characterization, design Programming systems Other UTPA CS courses: CSCI 6360: Graphics CSCI 6363: Human Computer Interaction About Libraries and Toolkits Which well look at for visualization It is, of course, possible to program visual representations using just a language and its primitives for visualization E.g., just c/c++, java, visual basic or c/c++ and opengl, java and jogl, etc. to create, e.g., graphs, trees, tables However, many of the same visual representations are used often, e.g., charts scatterplots, but not often enough to be a language primitive Libraries, or toolkits, provide a means to access these often used elements, focused on a domain e.g., D3 and vtk for visualization, Qt for interface design Such libraries and toolkits are effectively another software layer Some closer to the native language than others Loosely stated, those closer to the native language are more flexible, but may trade off ease of use Libraries and Toolkits for visualization D3 Java, javascript, etc. based toolkit for many VTK Allows recompilation to extend, access OpenGL, win system Close to language, robust, established/static, many file formats supported, vis techniques oriented to scientific visualization Others Class web site: Libraries and Toolkits prefuse Toolkit in Java for building information visualizations Fine-grained building blocks for constructing visualizations (as opposed to pre-made views) Data model is a graph (entities & relations) Includes library of layout algorithms, navigation and interaction techniques Written in Java2d Libraries and Toolkits prefuse Libraries and Toolkits D3 Data-Driven Documents Javascript-based Very similar to Protovis Except use web standardse.g., Scalable Vector Graphics (SVG) vs. proprietary graphics set Declarative Syntax like Protovis Creating/Modifying selections of the HTML DOM Good support for changing data Takes advantage of CSS3 Transformations and Transitions Integrates seamlessly into any webpage Libraries and Toolkits D3 Data-Driven Documents https://github.com/mbostock/d3/wiki/Gallery, selectable exampleshttps://github.com/mbostock/d3/wiki/Gallery Libraries and Toolkits IBMs Many Eyes Many Eyes IBM website Ease of creating new visualizations Discuss visualizations Users upload own data sets All become public table or unstructured text Word tree at right Libraries and Toolkits Others Piccolo Graphics toolkit with built-in zooming and panning support 2D Javascript InfoVis Toolkit Tableau Public Processing Language Software Architecture Abstraction, languages, toolkits Abstraction is at the core of computer science and information technology Have allowed the advances seen in making electronic information systems use E.g., advances in languages ASM - > early high level, e.g., FORTRAN - > structured, Pascal, C - > object-oriented, C++, Java Your (application) program Application Library (D3, VTK, or anything) Graphics Library (OpenGL, DirectX, ) Graphics Hardware (frame buffers, firmware, ) Display (and input) Hardware (screen, mouse, .) Window System (MS Windows, Apple, Motif) Software Architecture Applications and layers Applications are programs (that programmers write) Libraries and software layers have: Application programmer interfaces (APIs) Your (application) program Application Library (D3, VTK, or anything) Graphics Library (OpenGL, DirectX, ) Graphics Hardware (frame buffers, firmware, ) Display (and input) Hardware (screen, mouse, .) Window System (MS Windows, Apple, Motif) Libraries essentially are higher level, or provide abstractions, for lower levels In fact, interaction among layers Software Architecture Interaction among layers E.g., your program c/c++ or Java program, using, e.g., D3, VTK Uses, e.g., D3 elements, VTK classes Your (application) program Application Library (D3, VTK or anything) Graphics Library (OpenGL, DirectX, ) Graphics Hardware (frame buffers, firmware, ) Display (and input) Hardware (screen, mouse, .) Window System (MS Windows, Apple, Motif) VTK classes use/call: OpenGL, which accesses Graphics Hardware Also, Window System And input devices, through window system Also, application can access OpenGL and Window System directly Term Programming Project End.