Slide 1 - UTRGV Faculty Web

Download Report

Transcript Slide 1 - UTRGV Faculty Web

Visualization Programming:
“Libraries” and “Toolkits”
Class visualization resources
CSCI 6361
Visualization, Programming, and
Interactive Systems
• For visualization, humans
interact with computers
primarily through displays
Open
System
User, i.e., Human
“Interaction” “Perception” “Information”
Closed
System
• In fact, lots of things going on
that are part of the whole
context of visualization,
humans, and computing
Programming systems
-windows
-graphics
Style, characterization, design
– Programming systems
• Other UTPA CS courses:
– CSCI 6360: Graphics
– CSCI 6363: Human Computer
Interaction
An illusion:
analog world
represented
digitally
Programming is a craft
Hardware and
graphics engines
– Human
– Interaction
•
Display
Lights
Rendering
Drawing
Algorithms
3-D
Viewing
Representation of
curves and surfaces
“Models”,
(Foley et al. term)
Transformation
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
“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: http://faculty.utpa.edu/fowler/csci6361/index.html
“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 examples
“Libraries” and “Toolkits”
IBM’s 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
->
Your (application) program
“Application Library”
Window System
(D3, VTK, … or anything)
(MS Windows, Apple, Motif)
Graphics Library (OpenGL, DirectX, …)
Graphics Hardware (frame buffers, firmware, …)
Display (and input) Hardware
(screen, mouse, ….)
object-oriented, C++, Java
Software Architecture
Applications and layers
•
“Applications” are programs
–
•
“Libraries” essentially are higher level, or
provide abstractions, for lower levels
•
In fact, interaction among layers
(that programmers write)
“Libraries” and software layers have:
–
•
Application programmer interfaces (APIs)
Your (application) program
“Application Library”
Window System
(D3, VTK, … or anything)
(MS Windows, Apple, Motif)
Graphics Library (OpenGL, DirectX, …)
Graphics Hardware (frame buffers, firmware, …)
Display (and input) Hardware
(screen, mouse, ….)
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
•
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
Your (application) program
“Application Library”
Window System
(D3, VTK … or anything)
(MS Windows, Apple, Motif)
Graphics Library (OpenGL, DirectX, …)
Graphics Hardware (frame buffers, firmware, …)
Display (and input) Hardware
(screen, mouse, ….)
Term Programming Project
End
• .