Ada: plotting 2d graphs

2020-04-17 06:28发布

问题:

it would be interesting to be able to plot a 2D graph within an Ada code rather than having to save values say to file and use an external drawing software afterwards. A search on the web has taken me to two packages: Win_IO and JEWL. I have been able to use WIN_IO though but the documentation is quite poor and having just started using it, it seems that it is not possible to resize the size of the canvas. I use the GPS editor and I get complaint when running Win_IO that some fonts are not available on my system and that the output will be ugly. Finally the plot doesn't itself pop up on the screen; One has to click on the exe file of the file being compiled and linked so as to get the graph.

I have taken a look also at JEWL but it doesn't seem to be able to plot graphs.

Are there more Ada packages available out there for plotting 2D graphs.

Thanks a lot...


My experience with GNAVI:

The installation instructions are at

http://www.gnavi.org/index.php?Command=Class&ClassID=Start&CID=381

Basically the installation consists of: To use:

  1. Place this directory on your path
  2. cd to gnatcom and run: make install
  3. cd to gwindows and run: make UNICODE=1 all
  4. run: gnavi_ide and enjoy :-)

But the installation is plagued with errors:

C:\gnavi\gnatcom>install Installing GNATCOM..... MAKE Version 5.2 Copyright (c) 1987, 2000 Borland Error makefile 2: Command syntax error * 1 errors during make * Install Completed

C:\gnavi\gwindows>make UNICODE=1 all MAKE Version 5.2 Copyright (c) 1987, 2000 Borland Error makefile 2: Command syntax error * 1 errors during make *

And though C:GNAVI is on my path, the IDE still complains that icg.exe which is found in C:GNAVI is not on the path.`This is trouble with software which has not been fully tested!!! I was very disappointed that people can write irresponsible and incomplete installation instructions. Have the developers even found out that whether a normal user can install their software?

I have also try to look at AdaDesigner at https://gna.org/projects/adadesigner

Here, FireFox complains: This Connection is Untrusted

gna.org uses an invalid security certificate.

The certificate is not trusted because the issuer certificate is unknown.

I decided not to visit such a website.

回答1:

PLplot is a cross-platform package for creating scientific plots. It has a well-documented Ada binding. For reference, this gallery illustrates a variety of plots. Click a thumbnail to view a full-size image. Click either Ada tab (standard or traditional) to see the corresponding source code.



回答2:

I'd give a try to GTKAda. I'm not completely sure this subsystem would allow you to do 2D graphs as I've never used it for that purpose, but it can be done with GTK+ (C/C++).

There is also a guide on GTKAda and a reference manual, some documentation on the GTK toolkit itself may also come handy.



回答3:

It depends on exactly what you want to do. For graphing node-based diagrams, the first thing I'd look into using is Graphviz. It has its own special graphing language it uses, but I'm all about using Domain Specific Languages when appropriate. Ada has great interoperability, so using DSLs with it can really make it powerful.

An example I found is AdaDesigner, which generates Graphviz DOT files to help visualze the structure of Ada code.

The one time in the past I had to do simple plotting, it was for a web app. I ended up dynamically generating SVG pages on the server side (even though it was poorly supported then). Support is better now, so I'd definitely use it again today.

If working directly on a Windows PC display appeals more to you, there are several options for GUI bindings, all of which should support drawing lines and points on a canvas. In addtion to GTK (which is both powerful and portable), there are a few Win32 API's floating around. I think one comes with Gnat. Another you might not be aware of is GWindows. It is part of GNAVI, which aims to be sort of an OpenSource alternative to Delphi. It isn't the most active of projects, but is (reportedly) quite useable, and is still being worked on and used. Here are some screenshots of it being used for plotting.
(source: gnavi.org)



回答4:

MathGL is cross-platform GPL plotting library. It have C interface, so you can use it from yours code too. Also it can create a window with graphics -- i.e. you don't need to study/use other widget libraries in simplest case.



标签: graph ada