dataviz/lib.rs
1//! # DataViz Library
2//!
3//! **DataViz** is a versatile and modular Rust library for creating and managing a wide variety of charts and graphs.
4//! Designed with flexibility and extensibility in mind, DataViz provides a powerful API for data visualization,
5//! supporting different chart types, customization options, and interactive features.
6//!
7//! ## Features
8//! - **Comprehensive Chart Types**: Support for bar charts, scatter graphs, pie charts, histograms, area charts, and Cartesian graphs.
9//! - **Data Management**: Modular datasets for structured and reusable data handling.
10//! - **Customizable Renderers**: Drawers for rendering charts on pixel-based or vector-based canvases.
11//! - **Scalable Configuration**: Centralized figure configuration for appearance settings, including fonts, colors, and grid styles.
12//! - **Interactive Capabilities**: Hover-based interactivity to enhance user experience with dynamic updates and tooltips.
13//!
14//! ## Modules
15//! DataViz is organized into a set of modules that define the core components of the library:
16//!
17//! ### [`figure`]
18//! The main module that houses all types of charts and graphs. It includes:
19//! - **Chart Types**:
20//! - [`areachart`](crate::figure::figuretypes::areachart): Create area charts for visualizing data trends.
21//! - [`cartesiangraph`](crate::figure::figuretypes::cartesiangraph): Cartesian graphs for mathematical and data plotting.
22//! - [`groupbarchart`](crate::figure::figuretypes::groupbarchart): Grouped bar charts for comparative data visualization.
23//! - [`histogram`](crate::figure::figuretypes::histogram): Histograms for frequency distribution analysis.
24//! - [`piechart`](crate::figure::figuretypes::piechart): Pie charts for proportional data representation.
25//! - [`quadrant1graph`](crate::figure::figuretypes::quadrant1graph): Graphs restricted to the first quadrant.
26//! - [`scattergraph`](crate::figure::figuretypes::scattergraph): Scatter plots for individual data point visualization.
27//!
28//! ## Datasets
29//! Defines reusable and modular datasets for different chart types, enabling structured data representation. Includes:
30//! - [`areachartdataset`](crate::figure::datasets::areachartdataset)
31//! - [`bardataset`](crate::figure::datasets::bardataset)
32//! - [`cartesiangraphdataset`](crate::figure::datasets::cartesiangraphdataset)
33//! - [`scattergraphdataset`](crate::figure::datasets::scattergraphdataset)
34//! - [`dataset`](crate::figure::datasets::dataset): Common dataset traits for unifying data operations.
35//!
36//! ## Drawers
37//! Provides customizable renderers for each chart type. Drawers allow charts to be rendered on various canvases,
38//! such as pixel-based or vector-based canvases. Includes:
39//! - [`drawer`](crate::figure::drawers::drawer): Core drawing functionality.
40//! - Specialized drawers for specific chart types like:
41//! - [`drawerareachart`](crate::figure::drawers::drawerareachart)
42//! - [`drawerbarchart`](crate::figure::drawers::drawerbarchart)
43//! - [`drawerpiechart`](crate::figure::drawers::drawerpiechart), and more.
44//!
45//! ## Utilities
46//! Utility modules for managing chart attributes and behaviors. Includes:
47//! - [`axistype`](crate::figure::utilities::axistype): Enum for axis types (X or Y).
48//! - [`linetype`](crate::figure::utilities::linetype): Styles for chart lines (solid, dashed, dotted).
49//! - [`orientation`](crate::figure::utilities::orientation): Orientation handling (horizontal or vertical).
50//! - [`scatterdottype`](crate::figure::utilities::scatterdottype): Dot styles for scatter plots (circle, square, triangle, etc.).
51//!
52//! ## Configuration
53//! Centralized configuration for charts, providing a single source for appearance settings. Includes:
54//! - [`figureconfig`](crate::figure::configuration::figureconfig): Control colors, fonts, grid settings, and more.
55//!
56//! ## Canvas
57//! Abstractions for rendering surfaces, including:
58//! - [`pixelcanvas`](crate::figure::canvas::pixelcanvas): Raster-based rendering for charts.
59//! - [`svgcanvas`](crate::figure::canvas::svgcanvas): Scalable vector graphics rendering for high-quality outputs.
60//!
61//! ## Display
62//! Modules for interactivity and display management. Includes:
63//! - Hover functionality for charts like:
64//! - [`hovercartesian`](crate::figure::display::hovercartesian)
65//! - [`hoverpiechart`](crate::figure::display::hoverpiechart), and more.
66//! - [`winop`](crate::figure::display::winop): Manage window operations for interactive displays.
67//!
68//! ## Getting Started
69//! Here's a quick example of creating and rendering a pie chart:
70//!
71//! ```rust
72//! use dataviz::figure::figuretypes::piechart::PieChart;
73//! use dataviz::figure::configuration::figureconfig::FigureConfig;
74//!
75//! let mut pie_chart = PieChart::new("Market Share", FigureConfig::default());
76//! pie_chart.add_slice("Product A", 40.0, [255, 0, 0]);
77//! pie_chart.add_slice("Product B", 30.0, [0, 255, 0]);
78//! pie_chart.add_slice("Product C", 30.0, [0, 0, 255]);
79//!
80//! // Render the pie chart
81//! pie_chart.draw();
82//! ```
83//!
84//! ## License
85//! DataViz is open-source and licensed under the MIT license. Contributions are welcome!
86
87pub mod figure {
88 pub mod figuretypes {
89 pub mod areachart;
90 pub mod cartesiangraph;
91 pub mod groupbarchart;
92 pub mod histogram;
93 pub mod piechart;
94 pub mod quadrant1graph;
95 pub mod scattergraph;
96 }
97
98 pub mod datasets {
99 pub mod areachartdataset;
100 pub mod bardataset;
101 pub mod cartesiangraphdataset;
102 pub mod dataset;
103 pub mod scattergraphdataset;
104 }
105
106 pub mod drawers {
107 pub mod drawer;
108 pub mod drawerareachart;
109 pub mod drawerbarchart;
110 pub mod drawercartesiangraph;
111 pub mod drawerhistogram;
112 pub mod drawerpiechart;
113 pub mod drawerquadrant1graph;
114 pub mod drawerscattergraph;
115 }
116
117 pub mod utilities {
118 pub mod axistype;
119 pub mod linetype;
120 pub mod orientation;
121 pub mod scatterdottype;
122 }
123
124 pub mod configuration {
125 pub mod figureconfig;
126 }
127
128 pub mod canvas {
129 pub mod pixelcanvas;
130 pub mod svgcanvas;
131 }
132
133 pub mod display {
134 pub mod hover;
135 pub mod hoverareachart;
136 pub mod hovercartesian;
137 pub mod hovergroupbarchart;
138 pub mod hoverhistogram;
139 pub mod hoverpiechart;
140 pub mod hoverquadrant1graph;
141 pub mod hoverscatterchart;
142 pub mod winop;
143 }
144
145 pub mod figurefactory;
146}