Expand description
§DataViz Library
DataViz is a versatile and modular Rust library for creating and managing a wide variety of charts and graphs. Designed with flexibility and extensibility in mind, DataViz provides a powerful API for data visualization, supporting different chart types, customization options, and interactive features.
§Features
- Comprehensive Chart Types: Support for bar charts, scatter graphs, pie charts, histograms, area charts, and Cartesian graphs.
- Data Management: Modular datasets for structured and reusable data handling.
- Customizable Renderers: Drawers for rendering charts on pixel-based or vector-based canvases.
- Scalable Configuration: Centralized figure configuration for appearance settings, including fonts, colors, and grid styles.
- Interactive Capabilities: Hover-based interactivity to enhance user experience with dynamic updates and tooltips.
§Modules
DataViz is organized into a set of modules that define the core components of the library:
§figure
The main module that houses all types of charts and graphs. It includes:
- Chart Types:
areachart
: Create area charts for visualizing data trends.cartesiangraph
: Cartesian graphs for mathematical and data plotting.groupbarchart
: Grouped bar charts for comparative data visualization.histogram
: Histograms for frequency distribution analysis.piechart
: Pie charts for proportional data representation.quadrant1graph
: Graphs restricted to the first quadrant.scattergraph
: Scatter plots for individual data point visualization.
§Datasets
Defines reusable and modular datasets for different chart types, enabling structured data representation. Includes:
areachartdataset
bardataset
cartesiangraphdataset
scattergraphdataset
dataset
: Common dataset traits for unifying data operations.
§Drawers
Provides customizable renderers for each chart type. Drawers allow charts to be rendered on various canvases, such as pixel-based or vector-based canvases. Includes:
drawer
: Core drawing functionality.- Specialized drawers for specific chart types like:
drawerareachart
drawerbarchart
drawerpiechart
, and more.
§Utilities
Utility modules for managing chart attributes and behaviors. Includes:
axistype
: Enum for axis types (X or Y).linetype
: Styles for chart lines (solid, dashed, dotted).orientation
: Orientation handling (horizontal or vertical).scatterdottype
: Dot styles for scatter plots (circle, square, triangle, etc.).
§Configuration
Centralized configuration for charts, providing a single source for appearance settings. Includes:
figureconfig
: Control colors, fonts, grid settings, and more.
§Canvas
Abstractions for rendering surfaces, including:
pixelcanvas
: Raster-based rendering for charts.svgcanvas
: Scalable vector graphics rendering for high-quality outputs.
§Display
Modules for interactivity and display management. Includes:
- Hover functionality for charts like:
hovercartesian
hoverpiechart
, and more.
winop
: Manage window operations for interactive displays.
§Getting Started
Here’s a quick example of creating and rendering a pie chart:
use dataviz::figure::figuretypes::piechart::PieChart;
use dataviz::figure::configuration::figureconfig::FigureConfig;
let mut pie_chart = PieChart::new("Market Share", FigureConfig::default());
pie_chart.add_slice("Product A", 40.0, [255, 0, 0]);
pie_chart.add_slice("Product B", 30.0, [0, 255, 0]);
pie_chart.add_slice("Product C", 30.0, [0, 0, 255]);
// Render the pie chart
pie_chart.draw();
§License
DataViz is open-source and licensed under the MIT license. Contributions are welcome!