By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,910 Members | 1,036 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,910 IT Pros & Developers. It's quick & easy.

Tabular output and plotting 2d/3d data in C++

P: n/a
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table)
layout. And the format is portable! What I need is a C++ facility to
automate the generation process. It doesn't need to be html
necessarily - as long as the output is nice, it will be ok. Even a pdf
file could suit me. Any ideas?
The next question: I also need to plot some scientific data. Say, I
need the graphics in a vector format and not a raster pixels. I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?

Thanks in advance!
Jun 27 '08 #1
Share this Question
Share on Google+
7 Replies


P: n/a
zd***********@gmail.com wrote:
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table)
layout. And the format is portable! What I need is a C++ facility to
automate the generation process. It doesn't need to be html
necessarily - as long as the output is nice, it will be ok. Even a pdf
file could suit me. Any ideas?
Generating HTML as output is actually nice. However, C++ has no means
to do that, built-in. I would recommend looking in the archives for
"The Available C++ Libraries FAQ" (if the list is still maintained, of
course, I've not seen that posting from Nikki Locke in a very long
while). As to dynamic HTML, ask in 'comp.infosystems.www.*' newsgroup
hierarchy, there has to be some place where all dynamic HTML folks
gather to discuss the tools and libraries they use. I am fairly certain
that there exist the libraries with C++ bindings.
The next question: I also need to plot some scientific data. Say, I
need the graphics in a vector format and not a raster pixels. I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?
Again, there is probably the newsgroup for discussing Excel and hot to
program it. Look for "excel" in the name. I would however recommend
against Excel, you can do better with other vector formats, like SVG or
XAML. I've also seen people using gnuplot for vector output. I once
used DXF for some scientific plotting because the target was AutoCAD,
although it is relatively old and many applications can import those.
Depending on what you choose you will find different libraries for
working with those formats.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
Jun 27 '08 #2

P: n/a
On Tue, 20 May 2008 08:48:02 -0700, zdravko.monov wrote:
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table) layout.
And the format is portable! What I need is a C++ facility to automate
the generation process. It doesn't need to be html necessarily - as long
as the output is nice, it will be ok. Even a pdf file could suit me. Any
ideas?
This is, I think, somewhat OT (this newsgroup deals specifically with C++
*language* issues, rather than [non-standard] libraries), but anyway...

Tables and formatted output in html are pretty simple - I can't see it'd
be much of a problem just to write out the appropriate html from your
(C++, whatever) program.

Another option would be to figure out how to do tables in LaTeX, get your
program to chug out the appropriate LaTeX source (which is also just
plain text) and then run pdflatex on it for pdf output.

Depends what you want, really.
The next question: I also need to plot some scientific data. Say, I need
the graphics in a vector format and not a raster pixels.
I can highly recommend Gnuplot http://www.gnuplot.info/ for scientific
plotting. It's very powerful, does many graphics formats, bitmapped &
vector (including Postscript, pdf, SVG, ...) and if your platform
supports pipes you can pipe commands to it programmatically; or even if
you can't do that, you can just write data files and command scripts from
your program - I do this all the time).
I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?
Urgh to Excel :-/, but Gnuplot accepts ASCII data which you can edit in
any text editor.

Cheers,

--
Lionel B
Jun 27 '08 #3

P: n/a
In article <40435691-5738-4df3-8dfe-e81de017e9fa@
2g2000hsn.googlegroups.com>, zd***********@gmail.com says...
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table)
layout. And the format is portable! What I need is a C++ facility to
automate the generation process. It doesn't need to be html
necessarily - as long as the output is nice, it will be ok. Even a pdf
file could suit me. Any ideas?
As far as C++ cares, HTML is just a text file with some slightly unusual
contents.

If the format you're going to use is relatively fixed, so you don't mind
encoding its overall structure into the structure of your code, you can
pretty easily create some objects that emit an opening HTML tag in their
ctor, and a matching closing tag in their dtor.

Another alternative is to create some stream manipulators that emit HTML
tags as needed. You can either create separate manipulators for the
open/close tags, or you can create a manipulator that takes a parameter,
and encloses its parameter within the appropriate open/close tags.
The next question: I also need to plot some scientific data. Say, I
need the graphics in a vector format and not a raster pixels. I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?
If you want to export the data for reading by Excel, the obvious way
would be to emit a file of comma separated values. Reading CSV files is
a bit of a pain, but writing them is pretty trivial -- you basically
convert any embedded quote to a pair of quotes, enclose each value in
quotes, and put commas between the quoted fields. The hardest part is
probably keeping track of ends of lines and assuring you only put a
comma _between_ fields, not after the last field on a line.

A CSV file basically just includes your raw data, and it's up to the
user to pick the appropriate type of plot in Excel (or whatever). If you
know much about your data, you might be able to save your user trouble
by having your program specify plot types more directly. In this case,
something like gnuplot might be considerably easier to use in the long
term.

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jun 27 '08 #4

P: n/a
Jerry Coffin <jc*****@taeus.comwrote in
news:MP************************@news.sunsite.dk:
In article <40435691-5738-4df3-8dfe-e81de017e9fa@
2g2000hsn.googlegroups.com>, zd***********@gmail.com says...
>Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table)
layout. And the format is portable! What I need is a C++ facility to
automate the generation process. It doesn't need to be html
necessarily - as long as the output is nice, it will be ok. Even a
pdf file could suit me. Any ideas?

As far as C++ cares, HTML is just a text file with some slightly
unusual contents.

If the format you're going to use is relatively fixed, so you don't
mind encoding its overall structure into the structure of your code,
you can pretty easily create some objects that emit an opening HTML
tag in their ctor, and a matching closing tag in their dtor.

Another alternative is to create some stream manipulators that emit
HTML tags as needed. You can either create separate manipulators for
the open/close tags, or you can create a manipulator that takes a
parameter, and encloses its parameter within the appropriate
open/close tags.
Another possibility (in case the output becomes more complex than a
simple table of numbers) would be to incorporate some XML library
(TinyXML is the simplest AFAIK), construct the HTML in a memory as a XML
tree and finally let the library to stream out the <htmlnode to a
file. Makes the process a bit more structured. Beware that some legal
XML constructs like e.g. <table/ might not be well supported by the
web browsers or other HTML processing software.

hth
Paavo
Jun 27 '08 #5

P: n/a
I wonder why no one mentioned http://www.xportpro.com/
???
Why? Do you think I am going to reinvent the wheel? These libraries
are written to be used, not to be hidden!


On May 20, 6:42 pm, Lionel B <m...@privacy.netwrote:
On Tue, 20 May 2008 08:48:02 -0700, zdravko.monov wrote:
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table) layout.
And the format is portable! What I need is a C++ facility to automate
the generation process. It doesn't need to be html necessarily - as long
as the output is nice, it will be ok. Even a pdf file could suit me. Any
ideas?

This is, I think, somewhat OT (this newsgroup deals specifically with C++
*language* issues, rather than [non-standard] libraries), but anyway...

Tables and formatted output in html are pretty simple - I can't see it'd
be much of a problem just to write out the appropriate html from your
(C++, whatever) program.

Another option would be to figure out how to do tables in LaTeX, get your
program to chug out the appropriate LaTeX source (which is also just
plain text) and then run pdflatex on it for pdf output.

Depends what you want, really.
The next question: I also need to plot some scientific data. Say, I need
the graphics in a vector format and not a raster pixels.

I can highly recommend Gnuplothttp://www.gnuplot.info/for scientific
plotting. It's very powerful, does many graphics formats, bitmapped &
vector (including Postscript, pdf, SVG, ...) and if your platform
supports pipes you can pipe commands to it programmatically; or even if
you can't do that, you can just write data files and command scripts from
your program - I do this all the time).
I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?

Urgh to Excel :-/, but Gnuplot accepts ASCII data which you can edit in
any text editor.

Cheers,

--
Lionel B
Jun 27 '08 #6

P: n/a
On Wed, 21 May 2008 13:47:14 -0700, zdravko.monov wrote:

[please don't top-post - re-arranged]
On May 20, 6:42 pm, Lionel B <m...@privacy.netwrote:
>On Tue, 20 May 2008 08:48:02 -0700, zdravko.monov wrote:
Hi there!
I need a C++ library that can organize and write scientific (and
numerical overall) data in tables. I have been fighting with
std::ofstream and plain ASCII files, but it is difficult to position
columns by an offset, impossible to draw table borders etc. I am
currently thinking of a class that is able to write to an html file,
e.g. As far as I know, html offers much better text (and table)
layout. And the format is portable! What I need is a C++ facility to
automate the generation process. It doesn't need to be html
necessarily - as long as the output is nice, it will be ok. Even a
pdf file could suit me. Any ideas?

This is, I think, somewhat OT (this newsgroup deals specifically with
C++ *language* issues, rather than [non-standard] libraries), but
anyway...

Tables and formatted output in html are pretty simple - I can't see
it'd be much of a problem just to write out the appropriate html from
your (C++, whatever) program.

Another option would be to figure out how to do tables in LaTeX, get
your program to chug out the appropriate LaTeX source (which is also
just plain text) and then run pdflatex on it for pdf output.

Depends what you want, really.
The next question: I also need to plot some scientific data. Say, I
need the graphics in a vector format and not a raster pixels.

I can highly recommend Gnuplot http://www.gnuplot.info/for scientific
plotting. It's very powerful, does many graphics formats, bitmapped &
vector (including Postscript, pdf, SVG, ...) and if your platform
supports pipes you can pipe commands to it programmatically; or even if
you can't do that, you can just write data files and command scripts
from your program - I do this all the time).
I might
consider importing the data in Excel for later editing, e.g. What C++
library can do that?

Urgh to Excel :-/, but Gnuplot accepts ASCII data which you can edit in
any text editor.

Cheers,

--
Lionel B
^^^^^^^^
[please don't quote signatures]
I wonder why no one mentioned http://www.xportpro.com/ ???
Why?
Because no-one that replied had heard of it, maybe?
Do you think I am going to reinvent the wheel?
Dunno, you tell me.
These libraries are written to be used, not to be hidden!
it was hidden? You found it.

Anyway, what's this got to do with my reply?

--
Lionel B
Jun 27 '08 #7

P: n/a
Lionel B wrote:
On Wed, 21 May 2008 13:47:14 -0700, zdravko.monov wrote:

[please don't top-post - re-arranged]
>On May 20, 6:42 pm, Lionel B <m...@privacy.netwrote:
>>>[..]

Anyway, what's this got to do with my reply?
Yours was probably the last one zdravko had read by the time he decided
to reply to some other post... <g>

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
Jun 27 '08 #8

This discussion thread is closed

Replies have been disabled for this discussion.