void JPlotLinearFit::JPlotLinearFitX ( J2DPlotWidget* plot, JPlotDataBase* fitData, const JBoolean xlog, const JBoolean ylog ) { SetHasParameterErrors(kJTrue); SetParameterCount(2); SetHasGoodnessOfFit(kJTrue); itsXIsLog = xlog; itsYIsLog = ylog; if (!xlog && !ylog) { itsFunctionName = jnew JString("y = a+bx"); } else if (!xlog && ylog) { itsFunctionName = jnew JString("y = a Exp(bx)"); } itsRealCount = 0; GenerateFit(); GenerateDiffData(); if (itsYIsLog && !itsXIsLog) { AdjustDiffData(); } }
JPlotFitProxy::JPlotFitProxy ( J2DPlotWidget* plot, JPlotDataBase* fitData, istream& is ) : JPlotFitFunction(plot, fitData, 0, 0), itsErrors(NULL) { is >> itsHasGOF; if (itsHasGOF) { is >> itsGOFName; is >> itsGOF; } itsParms = new GVarList(); assert(itsParms != NULL); itsParms->AddVariable("x", 0); JSize count; is >> count; for (JIndex i = 1; i <= count; i++) { JString name; is >> name; JFloat value; is >> value; itsParms->AddVariable(name, value); } SetParameterCount(count); JBoolean hasParameterErrors; is >> hasParameterErrors; if (hasParameterErrors) { SetHasParameterErrors(kJTrue); itsErrors = new JArray<JFloat>; assert(itsErrors != NULL); for (JIndex i = 1; i <= count; i++) { JFloat value; is >> value; itsErrors->AppendElement(value); } } JFloat xMin; JFloat xMax; is >> xMin; is >> xMax; SetXRange(xMin, xMax); is >> itsFnString; itsFn = NULL; JParseFunction(itsFnString, itsParms, &itsFn); SetHasGoodnessOfFit(itsHasGOF); GenerateDiffData(); }