All Projects → franko → elementary-plotlib

franko / elementary-plotlib

Licence: MIT license
C/C++ Plotting Library

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Meson
512 projects
python
139335 projects - #7 most used programming language
lua
6591 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to elementary-plotlib

Clip
Create charts from the command line
Stars: ✭ 5,111 (+26800%)
Mutual labels:  charts, plotting
oxyplot-avalonia
A cross-platform plotting library for .NET. This package targets Avalonia apps.
Stars: ✭ 102 (+436.84%)
Mutual labels:  charts, plotting
Line Charts
A library for plotting line charts in SVG. Written in all Elm.
Stars: ✭ 445 (+2242.11%)
Mutual labels:  charts, plotting
Uplot
📈 A small, fast chart for time series, lines, areas, ohlc & bars
Stars: ✭ 6,808 (+35731.58%)
Mutual labels:  charts, plotting
Ggnet
GG.Net Data Visualization
Stars: ✭ 45 (+136.84%)
Mutual labels:  charts, plotting
Oxyplot
A cross-platform plotting library for .NET
Stars: ✭ 2,466 (+12878.95%)
Mutual labels:  charts, plotting
Gr.rb
Ruby wrapper for the GR framework
Stars: ✭ 60 (+215.79%)
Mutual labels:  charts, plotting
texfig
Utility to generate PGF vector files from Python's Matplotlib plots to use in LaTeX documents.
Stars: ✭ 58 (+205.26%)
Mutual labels:  plotting, vector-graphics
decent-visualizer
A visualizer for .shot files
Stars: ✭ 46 (+142.11%)
Mutual labels:  charts
RTGraph
A simple Python application for plotting and storing data in real time
Stars: ✭ 45 (+136.84%)
Mutual labels:  plotting
django-admin-charts
Create beautiful configurable charts from your models and display them on the django-admin index page or on django-admin-tools dashboard. The charts are based on models and criterias defined through admin interface and some chart parameters are configurable in live view.
Stars: ✭ 78 (+310.53%)
Mutual labels:  charts
asciichart
ASCII line charts in terminal ╭┈╯ Haskell port of kroitor/asciichart
Stars: ✭ 23 (+21.05%)
Mutual labels:  charts
ipychart
The power of Chart.js with Python
Stars: ✭ 48 (+152.63%)
Mutual labels:  charts
git-space
A web application to view Github's user profile.
Stars: ✭ 14 (-26.32%)
Mutual labels:  charts
SwiftCharts
Easy to use and highly customizable charts library for iOS
Stars: ✭ 2,405 (+12557.89%)
Mutual labels:  charts
online-retail-dashboard
Online Retail Dashboard
Stars: ✭ 59 (+210.53%)
Mutual labels:  charts
flutter heatmap calendar
A Heatmap Calendar based on Github's contributions chart
Stars: ✭ 47 (+147.37%)
Mutual labels:  charts
GRUtils.jl
Tools for using the GR framework in Julia
Stars: ✭ 29 (+52.63%)
Mutual labels:  plotting
KLineChartAndroid
A kline chart UI widget for android(Android版本的k线).
Stars: ✭ 51 (+168.42%)
Mutual labels:  charts
dufte
📈 Minimalistic Matplotlib style
Stars: ✭ 196 (+931.58%)
Mutual labels:  plotting

Elementary Plot Library — A C/C++ library for high-quality plots and animations

Looking for an open-source library that gives you a simple API to easily create high-quality plots on major desktop platforms? Do you need to pop a native window to display a plot without the need of a third-party library? Do you need integration with the FOX toolkit? Here it is. And it's free to use, even for commercial purposes.

MIT License

Beauty of simplicity

Simple C and C++ API to easily create and display plots with a few lines of code. Create animations with simple layer-based functions by adding elements.

With batteries included

Display a native window to display the plot or the animations without thind-party libraries on Windows and X Window's based systems.

High quality plots

the Elementary Plot library use the Anti-Grain library with subpixel resolution to create high-quality plots. The fonts are rendered using state of the art algorithm for font rendering but only basic text layout is supported.

Integration with existing toolkits

The library is thought to be integrated with existing GUI toolkits with minimal work. Currently only an implementation for the FOX Toolkit is provided but it can be used as an example to integrate the Elementary Plot library with other toolkits.

Documentation available

The Elementary Plotlib reference manual for the new API is available.

Examples

Here an example of a plot with a function and some markers.

Plot of function with markers

The corresponding source code is available here.

Features and Usage

The utilization of the library revolves around the plot and the window classes. The plot can be used to add graphical elements like lines or more complex objects and the window will just show on the screen the content of the plot.

The plot will take automatically cares of choosing the more appropriate limits, will draw the axis with the labels and in general all the elements needed for a plot. Plots presentation and their behavior can be changed by setting plot options, for example you can choose to don't show the plot's axis.

To make faster animations the graphical elements inside a plot can be organized in layers. New layers can be added to group all the newly added objects. A layer can be removed removing all the objects that belongs to the layer.

The window is used to show the plot on the screen. It can accomodate one plots or more by choosing a special layout. When a plot is updated by adding or removing some elements the window on the screen can be updated by calling a specific function.

Installing the library

The library can be compiled using the Meson build system and it does require the AGG and freetype2 libraries. If the FOX library is detected in addition the FOX support library will be built.

To build the library and the examples use the following command:

> meson build
> ninja -C build

The library can be also built using the SDL2 library backend. It can be enabled using the option 'sdl' with Meson:

> meson -Dsdl=true build
> ninja -C build

Rendering of graphical elements

All the graphical elements are represented in vector form. The rendering is done using the Agg library with subpixel resolution or with ordinary anti-alias.

The text drawing is doing using the freetype library. The font system is extremely simple and thought to display only simple ascii-based text.

Current status

The Elementary Plot library is quite solid in its core since it was used previously in two other projects. Its current status is 1.0 pre-release.

A clean and simple C and C++ API is now available to make the utilisation of the library super-simple and to isolate from the implementation details.

The library currently works and has native windows support on Windows and GNU/Linux. On other operating systems the library can work using the SDL2 library backend.

The Elementary Plot library may works on Mac OS X using the SDL2 backend but currently it is not tested neither it is supported. Contributions to tests the library on Mac OS X are welcome.

The documentation for the library is available in the form of a reference manual.

If you use the library expect to find bugs because the library was recently over-hauled and it is not largely tested.

Limitations

Be aware that the library does not offer as many features as that other more advanced libraries.

Among the more important limitations of the current implementation:

  • no mouse of keyboard events from the windows can be treated
  • no advanced text-layout capabilities
  • only a single type of font is available
  • no harware acceleration
  • plot has only a few options and are generally not very customizable

More Screenshots

The examples below are obsolete with the new API but still somewhat relevant in developer mode.

Below an example that show a customized pipeline to render a path:

Plot custom pipeline

Another example to show different rendering options:

Plot custom pipeline.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].