Histogram Class Reference
[Textual output]

List of all members.

Classes

class  ExcEmptyData
class  ExcIncompatibleArraySize
class  ExcInvalidData
class  ExcInvalidIntervals
class  ExcInvalidName
struct  Interval

Public Types

enum  IntervalSpacing { linear, logarithmic }

Public Member Functions

template<typename number >
void evaluate (const std::vector< Vector< number > > &values, const std::vector< double > &y_values, const unsigned int n_intervals, const IntervalSpacing interval_spacing=linear)
template<typename number >
void evaluate (const Vector< number > &values, const unsigned int n_intervals, const IntervalSpacing interval_spacing=linear)
void write_gnuplot (std::ostream &out) const
unsigned int memory_consumption () const

Static Public Member Functions

static std::string get_interval_spacing_names ()
static IntervalSpacing parse_interval_spacing (const std::string &name)

Static Private Member Functions

template<typename number >
static bool logarithmic_less (const number n1, const number n2)

Private Attributes

std::vector< std::vector
< Interval > > 
intervals
std::vector< doubley_values

Detailed Description

This class provides some facilities to generate 2d and 3d histograms. It is used by giving it one or several data sets and a rule how to break the range of values therein into intervals (e.g. linear spacing or logarithmic spacing of intervals). The values are then sorted into the different intervals and the number of values in each interval is stored for output later. In case only one data set was given, the resulting histogram will be a 2d one, while it will be a 3d one if more than one data set was given. For more than one data set, the same intervals are used for each of them anyway, to make comparison easier.

Ways to generate the intervals

At present, the following schemes for interval spacing are implemented:

To keep programs extendible, you can use the two functions get_interval_spacing_names and parse_interval_spacing, which always give you a complete list of spacing formats presently supported and are able to generate the respective value of the enum. If you use them, you can write your program in a way such that it only needs to be recompiled to take effect of newly added formats, without changing your code.

Output formats

At present, only GNUPLOT output is supported.

Author:
Wolfgang Bangerth, 1999

Member Enumeration Documentation

Definition of several ways to arrange the spacing of intervals.

Enumerator:
linear 
logarithmic 

Member Function Documentation

template<typename number >
void Histogram::evaluate ( const std::vector< Vector< number > > &  values,
const std::vector< double > &  y_values,
const unsigned int  n_intervals,
const IntervalSpacing  interval_spacing = linear 
) [inline]

Take several lists of values, each on to produce one histogram that will then be arrange one behind each other.

Using several data sets at once allows to compare them more easily, since the intervals into which the data is sorted is the same for all data sets.

The histograms will be arranged such that the computed intervals of the values[i][j] form the x-range, and the number of values in each interval will be the y-range (for 2d plots) or the z-range (for 3d plots). For 3d plots, the y_values parameter is used to assign each data set a value in the y direction, which is the depth coordinate in the resulting plot. For 2d plots, the y_values are ignored.

If you give only one data set, i.e. values.size()==1, then the resulting histogram will be a 2d one.

n_intervals denotes the number of intervals into which the data will be sorted; interval_spacing denotes the way the bounds of the intervals are computed. Refer to the general documentation for more information on this.

template<typename number >
void Histogram::evaluate ( const Vector< number > &  values,
const unsigned int  n_intervals,
const IntervalSpacing  interval_spacing = linear 
) [inline]

This function is only a wrapper to the above one in case you have only one data set.

void Histogram::write_gnuplot ( std::ostream &  out  )  const

Write the histogram computed by the evaluate function to a stream in a format suitable to the GNUPLOT program. The function generates 2d or 3d histograms.

static std::string Histogram::get_interval_spacing_names (  )  [static]

Return allowed names for the interval spacing as string. At present this is "linear|logarithmic".

static IntervalSpacing Histogram::parse_interval_spacing ( const std::string &  name  )  [static]

Get a string containing one of the names returned by the above function and return the respective value of IntervalSpacing. Throw an error if the string is no valid one.

unsigned int Histogram::memory_consumption (  )  const

Determine an estimate for the memory consumption (in bytes) of this object.

template<typename number >
static bool Histogram::logarithmic_less ( const number  n1,
const number  n2 
) [inline, static, private]

"Less-than" operation which finds the minimal positive value by sorting zero and negative value to be larger than the largest positive number. Used to find the lower bound of the leftmost interval in the logarithmic case interval spacing scheme.

Return true, if (n1<n2, and (n1>0 or n2<0)), or (n2<n1 and n1>0 and n2<=0). This in effect sorts all negativ numbers to be larger than the largest positive number.


Member Data Documentation

std::vector<std::vector<Interval> > Histogram::intervals [private]

Vector holding one set of intervals for each data set given to the evaluate function.

std::vector<double> Histogram::y_values [private]

Values for the depth axis of 3d histograms. Stored in the evaluate function.


The documentation for this class was generated from the following file:

deal.II documentation generated on Mon Nov 23 22:57:50 2009 by doxygen 1.6.1