Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jerr-it/sfgraphing

C++ Plot Library for SFML
https://github.com/jerr-it/sfgraphing

cpp graph hacktoberfest plot plots plotting sfml

Last synced: about 2 months ago
JSON representation

C++ Plot Library for SFML

Awesome Lists containing this project

README

        

SFGraphing





A C++ Plot Library to be used in combination with SFML




Newest Version


Entirely rewritten for better readability.

Added Piecharts!

You can now set Position and Dimension of Plots

How to use

Documentation at: https://jerr-it.github.io/SFGraphing/

The file main.cpp provides more details on how to use this library

By default a sample program will be created.

How to compile this example

```
cmake .
make graphing
./graphing
```
Depending on your OS and installation, you might need to adjust the SFML path in SFPlot/CMakeLists.txt to fit your installation of SFML.

Include header in your main file
```c++
#include "SFGraphing/SFPlot.h"
#include "SFGraphing/SFPieChart.h"
```

Important: You need a font, otherwise text wont display!
```c++
sf::Font font;
font.loadFromFile("YourFontHere.ttf");
```

Plot

Create a dataset
```c++
std::vector xAxis = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector yAxis = {1, 2, 3, 4, 5, 6, 5, 6, 7, 8};

PlotDataSet set(xAxis, yAxis, sf::Color::Green, "Green Data", PlottingType::LINE);
```
Available plotting types are POINTS, LINE and BARS

Create your plot and add your dataset
```c++
//Position, dimension, margin, font
SFPlot plot(sf::Vector2f(800, 0), sf::Vector2f(800, 800), 50, &font, "X Axis", "Y Axis");
plot.AddDataSet(&set);
```

Initialize the plott
```c++
//x-minimum, x-maximum, y-minimum, y-maximum, x-step-size, y-step-size, Color of axes
plot.SetupAxes(0, 10, 0, 10, 1, 1, sf::Color::White);
plot.GenerateVertices();
```
In case you want SFPlot to determine the axes scaling and numbering automatically, call without parameters:
```c++
plot.SetupAxes();
plot.GenerateVertices();
```
Display data (int your window loop)
```c++
window.clear();
window.draw(plot);
window.display();
```
Want to update data in real time?
```c++
window.clear();
plot.ClearVertices();

set.SetDataValue(0, set.GetDataValue(0) + sf::Vector2f(0, 0.001));

plot.SetupAxes();
plot.GenerateVertices();

window.draw(plot);
window.display();
```

Pie Chart

Create dataset
```c++
std::vector values = {100, 230, 150, 100};
std::vector colors = {sf::Color::Blue, sf::Color::Red, sf::Color::Magenta, sf::Color::Cyan};
std::vector labels = {"A", "B", "C", "D"};
//Representations: ABSOLUTE, RELATIVE
PieChartDataSet pSet(values, labels, Representation::RELATIVE, colors);
```
Create PieChart
```c++
//Dataset, Position, Radius, Font
SFPieChart pChart(&pSet, sf::Vector2f(250, 400), 200, &font);
```
Initialize
```c++
pChart.GenerateVertices();
```
Display
```c++
window.clear();
window.draw(pChart);
window.display();
```
Update data in real time?
```c++
window.clear();
pChart.ClearVertices();

pSet.SetValue(0, pSet.GetValue(0) + 0.003);

pChart.GenerateVertices();
window.draw(pChart);
window.display();
```