Skip to content

Blake-Madden/Wisteria-Dataviz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wisteria Dataviz

Linux Build & Unit Tests macOS Build & Unit Tests

cppcheck Microsoft C++ Code Analysis

doxygen i18n-check Spell Check

About

Wisteria Dataviz is data visualization library based on wxWidgets. It includes features such as:

  • Numerous built-in graphs (refer to the Wisteria::Graphs namespace for a full list)
  • Interface for displaying tabular data
  • Built-in printing, copying, and exporting support
  • Data importing (Excel, CSV, tab-delimited, or user-defined delimited files) support
  • Data transformations, such as filtering, pivoting (both longer or wider), subsetting, and recoding
  • Data exporting (CSV, tab-delimited, or user-defined delimited files) support
  • Image support, including the ability to use images for plot and bar backgrounds, logos, and point markers
  • Image effects, such as oil-painting and Sepia tone
  • Effects for boxes and bars, including transparency, a watercolor look, a glassy look, stipple brushes, and color fades
  • Reference lines and areas
  • Pre-defined and extensible color schemes
  • Multi-plot support
    • Graphs can be embedded side-by-side on the same (scrollable) canvas
    • Includes support for setting a common axis for all graphs across a row or down a column

See more in the features overview.

General Workflow

  • Setup the library's settings (optionally) when your application starts
  • Construct a Wisteria::Canvas object (which is a wxScrolledWindow-derived window), and embed it into a wxFrame or wxDialog
  • Import data into a Wisteria::Data::Dataset (or build a dataset), specifying which columns to include and how to classify them
  • Construct a plot object (e.g., Wisteria::Graphs::LinePlot) and pass your dataset to it
  • Customize the plot, as needed
    • Change the colors and styles of the bars, lines, etc.
    • Change the plot background color, or use an image as the background
    • Add titles and captions
    • Adjust the axes, add tickmarks, add custom labels
    • etc.
  • Add the plot (and its legend [if applicable]) to the canvas

Graph Types

Some of the graphs included are:

Basic

Bar Chart (Wisteria::Graphs::BarChart) Line Plot (Wisteria::Graphs::LinePlot)
Pie Chart (Wisteria::Graphs::PieChart) Donut Chart (Wisteria::Graphs::PieChart)
Table (Wisteria::Graphs::Table)
Sankey Diagram (Wisteria::Graphs::SankeyDiagram)
Word Cloud (Wisteria::Graphs::WordCloud)

Business

Gantt Chart (Wisteria::Graphs::GanttChart)
Candlestick Plot (Wisteria::Graphs::CandlestickPlot)

Statistical

Histogram (Wisteria::Graphs::Histogram) Box Plot (Wisteria::Graphs::BoxPlot)
Discrete Heat Map (Wisteria::Graphs::HeatMap) Grouped Discrete Heat Map (Wisteria::Graphs::HeatMap)

Survey Data

3-Point Likert Chart (Wisteria::Graphs::LikertChart)
Pro & Con Roadmap (Wisteria::Graphs::ProConRoadmap)

Social Sciences

W-Curve Plot (Wisteria::Graphs::WCurvePlot)
Linear Regression Roadmap (Wisteria::Graphs::LRRoadmap)

See more in the graphs gallery.

Release Notes

Release information is available here.

Building

Windows

Get and build wxWidgets 3.3 or higher:

  • Open Visual Studio and select Clone a Repository
  • Once the wxWidgets folder is cloned and opened in Visual Studio:
    • Open Project > CMake Settings for wxWidgets
      • Uncheck wxBUILD_SHARED
      • Set wxBUILD_OPTIMISE to "ON"
      • Set the configuration type to "Release"
      • Save your changes
    • Select Build > Install wxWidgets (builds and then copies the header, lib, and cmake files to the prefix folder)

Next, download and build Wisteria:

  • Open Visual Studio and select Clone a Repository
  • Open this project's CMake file in Visual Studio:
    • Open Project > CMake Settings for Wisteria
      • Set the configuration type to "Release" (or create a new release configuration)
      • Save your changes
  • Select View > CMake Targets
  • Build the demo, and wisteria, and/or doxygen-docs targets

Linux

Install the following from your repository manager (or build from source):

  • GTK3 development files (version 3.3 or higher)
  • OpenMP (libomp) and its development files
  • Threading Building Blocks (libtbb) and its development files
  • Doxygen (if building the API documentation)

Get and build wxWidgets 3.3 or higher at the same folder level as this project:

git clone https://github.com/wxWidgets/wxWidgets.git --recurse-submodules
cd wxWidgets
cmake . -DCMAKE_INSTALL_PREFIX=./wxlib -DwxBUILD_SHARED=OFF \
    -DwxBUILD_OPTIMISE=ON -DwxBUILD_STRIPPED_RELEASE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --target install -j4 --config Release
cd ..

Next, download Wisteria and build the library, demo, and documentation:

git clone https://github.com/Blake-Madden/Wisteria-Dataviz.git --recurse-submodules
cd Wisteria-Dataviz
cmake . -DCMAKE_BUILD_TYPE=Release
cmake --build . -j4 --config Release

If using KDevelop or VS Code, you can also open the CMake file and build from there.

macOS

Install the following using brew (or build from source):

  • XCode
  • Doxygen (if building the API documentation)

Get and build wxWidgets 3.3 or higher at the same folder level as this project:

git clone https://github.com/wxWidgets/wxWidgets.git --recurse-submodules
cd wxWidgets
cmake . -DCMAKE_INSTALL_PREFIX=./wxlib -DwxBUILD_SHARED=OFF \
    -DwxBUILD_OPTIMISE=ON -DwxBUILD_STRIPPED_RELEASE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --target install -j4 --config Release
cd ..

Next, download Wisteria and build the library, demo, and documentation:

git clone https://github.com/Blake-Madden/Wisteria-Dataviz.git --recurse-submodules
cd Wisteria-Dataviz
cmake . -DCMAKE_BUILD_TYPE=Release
# XCode will not understand an "all" target,
# so the binaries and manual must be built separately
cmake --build . --target demo -j4 --config Release
cmake --build . --target wisteria -j4 --config Release
cmake --build . --target doxygen-docs -j4

Documentation

To build the API documentation, open "docs/doxygen/Doxyfile" in Doxygen and run it.

Dependencies

  • wxWidgets 3.3 or higher
  • A C++20 compatible compiler (XCode on macOS)
  • CMake 3.25 or higher
  • Doxygen (if building the API documentation)
  • GTK 3 (Linux)
  • Threading Building Blocks: libtbb (Linux)
  • OpenMP (Linux)