# madplotlib **Repository Path**: cadcae/madplotlib ## Basic Information - **Project Name**: madplotlib - **Description**: A C++ wrapper of Qt Charts that looks, tastes and smells like matplotlib but isn't. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Madplotlib ========== A C++ wrapper of Qt Charts that looks, tastes and smells like [matplotlib](https://github.com/matplotlib/matplotlib) but isn't. Madplotlib is a C++ header-only library that provides simple 2D plot capabilities, similar to [matplotlib](https://github.com/matplotlib/matplotlib) for Python. Madplotlib uses Qt Charts behind your back to render cool looking ~~cats~~ graphs that are easy to create with the help of [Eigen](eigen.tuxfamily.org). Here is what it looks like: ```cpp Eigen::ArrayXf a = Eigen::ArrayXf::LinSpaced(20, 0, 2000); Eigen::ArrayXf b = Eigen::ArrayXf::LinSpaced(20, 0, 100); Eigen::ArrayXf c = Eigen::ArrayXf::Zero(20); b = b * b; c = 1000; Madplotlib plt; plt.title("Test 5: Linear vs Exponential vs Flat"); plt.ylabel("Y Values"); plt.xlabel("X Values"); plt.plot(a, QString("label=Linear")); plt.plot(b, QString("label=Exponential")); plt.plot(c, QString("label=Flat")); plt.legend("loc=center right"); plt.show(); ``` Screenshots ----------- Installation ------------ Make sure to use **Qt 5.7** or higher and that you have **Eigen 3.x** properly installed. After that, just add **Madplotlib.h** to your projects and don't worry about anything else. We got your back, Jack! Testing ------- The companion ~~cube~~ file **eigen_tests.cpp** demonstrates several features offered by this library. Each test case is heavily commentted to make sure you know what it is doing and how. They are a great reference to get you quickly started. By the way, did I mention it resembles [matplotlib](https://github.com/matplotlib/matplotlib)? Did I?!? Contribute ---------- There's a ginormous number of things I would like to incorporate into this library, including a damn good documentation. **;)** If you are strong with the Force and would like to contribute to this project, I recommend this hands-on guide to [Github-Forking](https://gist.github.com/Chaser324/ce0505fbed06b947d962) to learn the technical shenanigans. Remember: when in doubt, do not clone... fork! Contact ------- [Twitter](http://twitter.com/karlphillip) [Stackoverflow](http://stackoverflow.com/users/176769/karlphillip) Library features ---------------- * Data for plotting must be created through `Eigen::ArrayXf`; * Draw lines, scatter plots, or both, simultaneously and at the same time: * Lines can be continuous, made of dashes or even dots; * Circular or squared markers can be used on scatter plots; * It supports multiple series of data; * Title, labels, legends and more can be specified; * Color support for lines and markers; * Persistence: save your charts on the disk (PNG/JPG); * Define limits for your axis; * Show/hide axis ticks or background grid; * Charts block execution flow when they are `show()` to mimic `plot()` from matplotlib (but this can be disabled);