XRT/3d: Interactive 3D Graph Widget
XRT/graph can create various basic graphs types such as bar, XY plot, pie and area, as well as much more advanced graphs. With more than 200 resources, XRT/graph enables you to precisely control the look and behavior of your charts.
Many sources of data can be graphed and data can be updated in real-time. Z-values are required which map to the X-Y grid. Missing data called "holes" can be handled automatically. There are functions to allocate C data structures for graph data. Data can also be loaded from files.
15 different surface/contour graph types and 15 different bar/histograms can be created by using just 4 resources: DrawMesh, DrawShaded, DrawContours and DrawZones. There are resources to hide invisible lines and control perspective effects allowing you to create sophisticated graphs. Contouring and zoning are calculated automatically using linear or user-specified distribution tables. 4D graphs can also be created by laying another dataset over the 3D mesh or bar graph. The 4th dimension is displayed as color.
Axis annotations can be automatically calculated from the data. Minimum and maximum values for X, Y and Z axes, text labels and axis titles can be specified.
header and footer
Multiple lines of text can be positioned in the graph header and footer.
You can add comments on particular data points or annotate dynamically where a user selects with the mouse. The text object can be created and manipulated using standard Xt() routines. Text areas can be attached to a grid index, data point or a particular pixel.
Legends are automatically created when contour or zones are displayed. Legends can be displayed vertically or horizontally. The location can be determined using an anchor.
zoom, scaling, translation and rotation
End-users can rotate/scale/zoom graphs to view data from various angles. Features such as rotation based on a particular axis, zooming in to a box drawn by the mouse, or hiding graphs during rotation are also supported. These interactive functions are embedded in the widget and can be customized by the programmer, or by the end-user.
Providing user feedback to your application is easy. When a user clicks a point on a graph, the program returns the value of the point. The point can be dragged by the user to a new value. The map() function maps mouse events to graph coordinates. The pick() function determines the closest data point to the mouse event.
- Double buffering
- Source code routines to create a dataset which is a subset of a larger dataset
- Projection of contour or zones to be displayed on the top and bottom of the unit cube
- Resource converters
XRT/3d Resources - The Power of Object-Oriented Resources
Basic surface, contour and bar graphs can be displayed using 4 boolean resources; DrawMesh, DrawShaded, DrawContours, DrawZones. There are more than 140 resources provided by XRT/3d. However, you will normally need to set less than 20 resources because XRT/3d calculates appropriate values for most resources by default. Thanks to object-oriented resource programming, not only programmers but also end-users can change graph settings anytime.
The image below displays a graph where only one simple dataset is specified. The DrawMesh resource is on, and DrawShaded, DrawContours and DrawZones resources are off. This is the default behavior.
The image below displays the same graph with the DrawShaded resource on. The top and bottom color of the surface has also been specified.
When DrawZones is on, the data is grouped in zones(10 by default) based on the distribution table.
When DrawMesh is off and DrawContour is on, only zones and contours are displayed.
To view the surface in 2D, turn DrawShaded off.
When DrawMesh and DrawShaded is switched back on, zone, grid and contours are displayed in 3D graphs.
The amount of data is reduced using sampling routines provided by XRT/3d. The graph is now a 3D bar graph. Each bar still displays zones and contours.
The last graph uses a single color for each bar to specify the zone values.
More examples of graphs that have been created with XRT/3d can be found here.