Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotting graphs in C++

Tags:

c++

python

graph

I have made the following graph using matplotlib in python.I have also attached the code I used to make this.enter image description here

The code for the arena

import matplotlib.pyplot as plt
import matplotlib.patches as patches

obs_boundary = [
            [0, 0, 10, 600],
            [0, 600, 900, 10],
            [10, 0, 900, 10],
            [900, 10, 10, 600]
        ]
obs_cir_own = [
    [50,500,10],
    [100,300,10],
    [240,240,10],
    [300,400,10],
    [190,50,10]

        ]
obs_cir_opp = [
            [700, 420, 10],
            [460, 200, 10],
            [550, 500, 10],
            [670, 70, 10],
            [800, 230, 10],
            [600,300,10]
        ]
fig, ax = plt.subplots()

for (ox, oy, w, h) in obs_boundary:
    print(ox, oy, w, h)        
    ax.add_patch(
                patches.Rectangle(
                    (ox, oy), w, h,
                    edgecolor='black',
                    facecolor='black',
                    fill=True
                )
            )

for (ox, oy,r) in obs_cir_own:
            ax.add_patch(
                patches.Circle(
                    (ox, oy), r,
                    edgecolor='black',
                    facecolor='green',
                    fill=True
                )
            )
for (ox, oy, r) in obs_cir_opp:
            ax.add_patch(
                patches.Circle(
                    (ox, oy), r,
                    edgecolor='black',
                    facecolor='red',
                    fill=True
                )
            )
 
plt.plot(50,50, "bs", linewidth=30)
plt.plot(870, 550, "ys", linewidth=30)           
name='arena'
plt.title(name)
plt.axis("equal")

So, I want to implement a similar arena using C++ and I have no idea how to do it? I researched I got to know something about qtplot again I dont know much about qt. So, is qtplot the only way or there are some easier way. Please tell me how to implement this in C++.

like image 478
SHIVANSHU SAHOO Avatar asked Dec 23 '22 17:12

SHIVANSHU SAHOO


2 Answers

You could try https://github.com/lava/matplotlib-cpp, which looks like it is just a wrapper around matplotlib anyway, so you are still calling/using Python and matplotlib in the end. With this you probably can copy your code nearly verbatim to "C++".

like image 88
Jan Christoph Terasa Avatar answered Jan 07 '23 04:01

Jan Christoph Terasa


An excellent C++ library to plot graphs is ROOT. It was developed by CERN for physicists. It also includes a C++ shell, in case you want to use C++ with an interactive prompt.

You can find the documentation, download links, and lots of examples, at https://root.cern/.

There is also a stackoverflow question by someone trying to plot points: CERN ROOT: Is is possible to plot pairs of x-y data points?

like image 28
Stef Avatar answered Jan 07 '23 03:01

Stef