{"id":21027332,"url":"https://github.com/franko/elementary-plotlib","last_synced_at":"2026-03-02T05:31:32.368Z","repository":{"id":7234644,"uuid":"8543807","full_name":"franko/elementary-plotlib","owner":"franko","description":"C/C++ Plotting Library","archived":false,"fork":false,"pushed_at":"2022-12-17T15:00:34.000Z","size":6875,"stargazers_count":25,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-15T10:39:59.004Z","etag":null,"topics":["c-plus-plus","charts","graphics2d","plotting","vector-graphics"],"latest_commit_sha":null,"homepage":"https://franko.github.io/elementary-plotlib/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/franko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"franko","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2013-03-03T22:35:58.000Z","updated_at":"2024-08-06T12:23:42.000Z","dependencies_parsed_at":"2023-01-11T18:45:19.455Z","dependency_job_id":null,"html_url":"https://github.com/franko/elementary-plotlib","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/franko/elementary-plotlib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franko%2Felementary-plotlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franko%2Felementary-plotlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franko%2Felementary-plotlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franko%2Felementary-plotlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/franko","download_url":"https://codeload.github.com/franko/elementary-plotlib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franko%2Felementary-plotlib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29993376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","charts","graphics2d","plotting","vector-graphics"],"created_at":"2024-11-19T11:49:34.182Z","updated_at":"2026-03-02T05:31:32.340Z","avatar_url":"https://github.com/franko.png","language":"C++","funding_links":["https://github.com/sponsors/franko"],"categories":[],"sub_categories":[],"readme":"Elementary Plot Library — *A C/C++ library for high-quality plots and animations*\n\nLooking for an open-source library that gives you a simple API to easily\ncreate high-quality plots on major desktop platforms? Do you need to pop\na native window to display a plot without the need of a third-party library?\nDo you need integration with the FOX toolkit?\n*Here it is.* And it's free to use, even for commercial purposes.\n\n[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**Beauty of simplicity**\n\nSimple 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.\n\n**With batteries included**\n\nDisplay a native window to display the plot or the animations without thind-party libraries on Windows and X Window's based systems.\n\n**High quality plots**\n\nthe 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.\n\n**Integration with existing toolkits**\n\nThe library is thought to be integrated with existing GUI toolkits with minimal work. Currently only an implementation for the [FOX Toolkit](http://www.fox-toolkit.org/) is provided but it can be used as an example to integrate the Elementary Plot library with other toolkits.\n\n**Documentation available**\n\nThe [Elementary Plotlib reference manual](http://franko.github.io/elementary-plotlib/manual/) for the new API is available.\n\nExamples\n========\n\nHere an example of a plot with a function and some markers.\n\n![Plot of function with markers](https://github.com/franko/elementary-plotlib/blob/master/sphinx-doc/manual/source/plot-function-example.png)\n\nThe corresponding source code is available [here](https://github.com/franko/elementary-plotlib/blob/master/tests/test-window-function.cpp).\n\nFeatures and Usage\n---\n\nThe 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.\n\nThe 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.\n\nTo 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.\n\nThe 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.\n\nInstalling the library\n---\n\nThe library can be compiled using the Meson build system and it does require the\nAGG and freetype2 libraries. If the FOX library is detected in addition the FOX\nsupport library will be built.\n\nTo build the library and the examples use the following command:\n```\n\u003e meson build\n\u003e ninja -C build\n```\n\nThe library can be also built using the SDL2 library backend.\nIt can be enabled using the option 'sdl' with Meson:\n\n```\n\u003e meson -Dsdl=true build\n\u003e ninja -C build\n```\n\nRendering of graphical elements\n----\n\nAll the graphical elements are represented in vector form. The rendering is done using the Agg library with subpixel resolution or with ordinary anti-alias.\n\nThe text drawing is doing using the freetype library. The font system is extremely simple and thought to display only simple ascii-based text.\n\n\nCurrent status\n---\n\nThe Elementary Plot library is quite solid in its core since it was used previously in two other projects.\nIts current status is 1.0 pre-release.\n\nA 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.\n\nThe library currently works and has native windows support on Windows and\nGNU/Linux.\nOn other operating systems the library can work using the SDL2 library backend.\n\nThe Elementary Plot library may works on Mac OS X using the SDL2 backend\nbut currently it is not tested neither it is supported.\nContributions to tests the library on Mac OS X are welcome.\n\nThe documentation for the library is available in the form of a [reference manual](http://franko.github.io/elementary-plotlib/).\n\nIf you use the library expect to find bugs because the library was recently over-hauled and it is not largely tested.\n\nLimitations\n---\n\nBe aware that the library does not offer as many features as that other more advanced libraries.\n\nAmong the more important limitations of the current implementation:\n\n  - no mouse of keyboard events from the windows can be treated\n  - no advanced text-layout capabilities\n  - only a single type of font is available\n  - no harware acceleration\n  - plot has only a few options and are generally not very customizable\n\nMore Screenshots\n---\n\n***The examples below are obsolete with the new API but still somewhat relevant in developer mode***.\n\nBelow an example that show a customized pipeline to render a path:\n\n![Plot custom pipeline](https://github.com/franko/elementary-plotlib/blob/master/doc/libcanvas-custom-pipeline.png)\n\nAnother example to show different rendering options:\n\n![Plot custom pipeline](https://github.com/franko/elementary-plotlib/blob/master/doc/libcanvas-rendering-options.png).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranko%2Felementary-plotlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffranko%2Felementary-plotlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranko%2Felementary-plotlib/lists"}