mirror of
https://github.com/aportelli/LatAnalyze.git
synced 2024-11-10 00:45:36 +00:00
Plot prediction bands without samples
This commit is contained in:
parent
070f91a4ed
commit
b04338bf36
@ -116,7 +116,7 @@ PlotData::PlotData(const DMatSample &x, const DMatSample &y)
|
||||
{
|
||||
if (x[central].rows() != y[central].rows())
|
||||
{
|
||||
LATAN_ERROR(Size, "x and y vector does not have the same size");
|
||||
LATAN_ERROR(Size, "x and y vectors do not have the same size");
|
||||
}
|
||||
|
||||
DMat d(x[central].rows(), 4);
|
||||
@ -153,7 +153,7 @@ PlotData::PlotData(const DMatSample &x, const DVec &y)
|
||||
{
|
||||
if (x[central].rows() != y.rows())
|
||||
{
|
||||
LATAN_ERROR(Size, "x and y vector does not have the same size");
|
||||
LATAN_ERROR(Size, "x and y vectors do not have the same size");
|
||||
}
|
||||
|
||||
DMat d(x[central].rows(), 3), xerr, yerr;
|
||||
@ -182,7 +182,7 @@ PlotLine::PlotLine(const DVec &x, const DVec &y)
|
||||
{
|
||||
if (x.size() != y.size())
|
||||
{
|
||||
LATAN_ERROR(Size, "x and y vector does not have the same size");
|
||||
LATAN_ERROR(Size, "x and y vectors do not have the same size");
|
||||
}
|
||||
|
||||
DMat d(x.size(), 2);
|
||||
@ -234,6 +234,41 @@ PlotFunction::PlotFunction(const DoubleFunction &function, const double xMin,
|
||||
}
|
||||
|
||||
// PlotPredBand constructor ////////////////////////////////////////////////////
|
||||
void PlotPredBand::makePredBand(const DMat &low, const DMat &high, const double opacity)
|
||||
{
|
||||
string lowFileName, highFileName;
|
||||
|
||||
lowFileName = dumpToTmpFile(low);
|
||||
highFileName = dumpToTmpFile(high);
|
||||
pushTmpFile(lowFileName);
|
||||
pushTmpFile(highFileName);
|
||||
setCommand("'< (cat " + lowFileName + "; tac " + highFileName +
|
||||
"; head -n1 " + lowFileName + ")' u 1:2 w filledcurves closed" +
|
||||
" fs solid " + strFrom(opacity) + " noborder");
|
||||
}
|
||||
|
||||
PlotPredBand::PlotPredBand(const DVec &x, const DVec &y, const DVec &yerr,
|
||||
const double opacity)
|
||||
{
|
||||
if (x.size() != y.size())
|
||||
{
|
||||
LATAN_ERROR(Size, "x and y vectors do not have the same size");
|
||||
}
|
||||
if (y.size() != yerr.size())
|
||||
{
|
||||
LATAN_ERROR(Size, "y and y error vectors do not have the same size");
|
||||
}
|
||||
|
||||
Index nPoint = x.size();
|
||||
DMat dLow(nPoint, 2), dHigh(nPoint, 2);
|
||||
|
||||
dLow.col(0) = x;
|
||||
dLow.col(1) = y - yerr;
|
||||
dHigh.col(0) = x;
|
||||
dHigh.col(1) = y + yerr;
|
||||
makePredBand(dLow, dHigh, opacity);
|
||||
}
|
||||
|
||||
PlotPredBand::PlotPredBand(const DoubleFunctionSample &function,
|
||||
const double xMin, const double xMax,
|
||||
const unsigned int nPoint, const double opacity)
|
||||
@ -254,15 +289,10 @@ PlotPredBand::PlotPredBand(const DoubleFunctionSample &function,
|
||||
dHigh(i, 0) = x;
|
||||
dHigh(i, 1) = pred[central] + err;
|
||||
}
|
||||
lowFileName = dumpToTmpFile(dLow);
|
||||
highFileName = dumpToTmpFile(dHigh);
|
||||
pushTmpFile(lowFileName);
|
||||
pushTmpFile(highFileName);
|
||||
setCommand("'< (cat " + lowFileName + "; tac " + highFileName +
|
||||
"; head -n1 " + lowFileName + ")' u 1:2 w filledcurves closed" +
|
||||
" fs solid " + strFrom(opacity) + " noborder");
|
||||
makePredBand(dLow, dHigh, opacity);
|
||||
}
|
||||
|
||||
|
||||
// PlotHistogram constructor ///////////////////////////////////////////////////
|
||||
PlotHistogram::PlotHistogram(const Histogram &h)
|
||||
{
|
||||
|
@ -139,11 +139,15 @@ class PlotPredBand: public PlotObject
|
||||
{
|
||||
public:
|
||||
// constructor
|
||||
PlotPredBand(const DVec &x, const DVec &y, const DVec &yerr,
|
||||
const double opacity = 0.15);
|
||||
PlotPredBand(const DoubleFunctionSample &function, const double xMin,
|
||||
const double xMax, const unsigned int nPoint = 1000,
|
||||
const double opacity = 0.15);
|
||||
// destructor
|
||||
virtual ~PlotPredBand(void) = default;
|
||||
private:
|
||||
void makePredBand(const DMat &low, const DMat &high, const double opacity);
|
||||
};
|
||||
|
||||
class PlotHistogram: public PlotObject
|
||||
|
Loading…
Reference in New Issue
Block a user