From 65def7d923604913ee69efb05eabc2192e33b346 Mon Sep 17 00:00:00 2001 From: koldo Date: Sat, 14 Mar 2020 09:45:02 +0000 Subject: [PATCH] ScatterCtrl: Included derivatives git-svn-id: svn://ultimatepp.org/upp/trunk@14165 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ScatterCtrl/Processing.cpp | 60 +- uppsrc/ScatterCtrl/Properties.h | 2 + uppsrc/ScatterCtrl/ScatterCtrl.lay | 80 ++- uppsrc/ScatterCtrl/ScatterCtrl.t | 1035 +++++++++++++++------------- uppsrc/ScatterCtrl/ScatterCtrl.usc | 4 +- 5 files changed, 672 insertions(+), 509 deletions(-) diff --git a/uppsrc/ScatterCtrl/Processing.cpp b/uppsrc/ScatterCtrl/Processing.cpp index 9b18182a1..db41289c8 100644 --- a/uppsrc/ScatterCtrl/Processing.cpp +++ b/uppsrc/ScatterCtrl/Processing.cpp @@ -147,6 +147,13 @@ ProcessingTab::ProcessingTab() tabFitRight.opSinus.WhenAction = THISBACK(OnOp); tabFitRight.opSinusTend.WhenAction = THISBACK(OnOp); tabFitRight.opSpline.WhenAction = THISBACK(OnOp); + tabFitRight.opDerivative.WhenAction = THISBACK(OnOp); + tabFitRight.derOrder.WhenAction = THISBACK(OnOp); + tabFitRight.derAccuracy.WhenAction = THISBACK(OnOp); + tabFitRight.opSG.WhenAction = THISBACK(OnOp); + tabFitRight.sgOrder.WhenAction = THISBACK(OnOp); + tabFitRight.sgSize.WhenAction = THISBACK(OnOp); + tabFitRight.sgDeg.WhenAction = THISBACK(OnOp); tabFitRight.opMax.WhenAction = THISBACK(OnOp); tabFitRight.opMin.WhenAction = THISBACK(OnOp); tabFitRight.opMovAvg.WhenAction = THISBACK(OnOp); @@ -156,6 +163,20 @@ ProcessingTab::ProcessingTab() tabFitRight.width.WhenLostFocus = THISBACK(OnUpdateSensitivity); tabFitRight.width.WhenAction = THISBACK(OnUpdateSensitivity); + tabFitRight.opDerivative.Tip(t_("Numerical derivative including derivative order and accuracy (related to window size)")); + tabFitRight.derOrder <<= 1; + tabFitRight.derOrder.Tip(t_("Implemented orders are 1 (first) and 2 (second derivative)")); + tabFitRight.derAccuracy <<= 6; + tabFitRight.derAccuracy.SetInc(2); + tabFitRight.derAccuracy.Tip(t_("Implemented accuracies are 2, 4, 6 and 8")); + tabFitRight.opSG.Tip(t_("Savitzky–Golay filter including derivative order, window size and polynomial degree")); + tabFitRight.sgOrder <<= 0; + tabFitRight.sgOrder.Tip(t_("Implemented orders are 0 (just filter), 1 (first) and 2 (second derivative)")); + tabFitRight.sgSize <<= 5; + //tabFitRight.sgSize.SetInc(2); + tabFitRight.sgSize.Tip(t_("Window size")); + tabFitRight.sgDeg <<= 3; + tabFitRight.sgDeg.Tip(t_("Polynomial degree")); tabFitRight.numDecimals <<= 3; tabFitRight.numDecimals.WhenAction = THISBACK(UpdateEquations); tabFitRight.showEquation.WhenAction = THISBACK(OnShowEquation); @@ -340,11 +361,13 @@ void ProcessingTab::OnOp() tabFitLeft.scatter.ScatterDraw::Show(5, tabFitRight.opSinus); tabFitLeft.scatter.ScatterDraw::Show(6, tabFitRight.opSinusTend); tabFitLeft.scatter.ScatterDraw::Show(7, tabFitRight.opSpline); - tabFitLeft.scatter.ScatterDraw::Show(8, tabFitRight.opMax); - tabFitLeft.scatter.ScatterDraw::Show(9, tabFitRight.opMin); - tabFitLeft.scatter.ScatterDraw::Show(10,tabFitRight.opMovAvg); - tabFitLeft.scatter.ScatterDraw::Show(11,tabFitRight.opSecAvg); - tabFitLeft.scatter.ScatterDraw::Show(12,tabFitRight.opCumAvg); + tabFitLeft.scatter.ScatterDraw::Show(8, tabFitRight.opDerivative); + tabFitLeft.scatter.ScatterDraw::Show(9, tabFitRight.opSG); + tabFitLeft.scatter.ScatterDraw::Show(10,tabFitRight.opMax); + tabFitLeft.scatter.ScatterDraw::Show(11,tabFitRight.opMin); + tabFitLeft.scatter.ScatterDraw::Show(12,tabFitRight.opMovAvg); + tabFitLeft.scatter.ScatterDraw::Show(13,tabFitRight.opSecAvg); + tabFitLeft.scatter.ScatterDraw::Show(14,tabFitRight.opCumAvg); UpdateEquations(); OnShowEquation(); @@ -465,6 +488,8 @@ void ProcessingTab::UpdateField(const String _name, int _id) tabFitLeft.scatter.AddSeries(sinus).NoMark().Stroke(1.5); tabFitLeft.scatter.AddSeries(sinusTend).NoMark().Stroke(1.5); tabFitLeft.scatter.AddSeries(spline).NoMark().Dash(LINE_SOLID).Stroke(1.5); + tabFitLeft.scatter.AddSeries(derivative).NoMark().Dash(LINE_SOLID).Stroke(1.5); + tabFitLeft.scatter.AddSeries(sg).NoMark().Dash(LINE_SOLID).Stroke(1.5); tabFitLeft.scatter.AddSeries(upperEnvelope).Legend(pscatter->GetLegend(id) + String("-") + t_("Max")) .NoMark().Dash(LINE_DASHED).Stroke(1.5).SetSequentialX(true); tabFitLeft.scatter.AddSeries(lowerEnvelope).Legend(pscatter->GetLegend(id) + String("-") + t_("Min")) @@ -483,6 +508,11 @@ void ProcessingTab::UpdateField(const String _name, int _id) tabFitRight.opSinus.Enable(false); tabFitRight.opSinusTend.Enable(false); tabFitRight.opSpline.Enable(false); + tabFitRight.opDerivative.Enable(false); + tabFitRight.derOrder.Enable(false); + tabFitRight.derAccuracy.Enable(false); + tabFitRight.opSG.Enable(false); + tabFitRight.sgOrder.Enable(false); tabFitRight.opMax.Enable(false); tabFitRight.opMin.Enable(false); tabFitRight.opMovAvg.Enable(false); @@ -500,6 +530,24 @@ void ProcessingTab::OnUpdateSensitivity() DataSource &data = tabFitLeft.scatter.GetDataSource(0); bool refresh = false; + if (tabFitRight.opDerivative) { + bool isOdd = int(~(tabFitRight.derAccuracy))%2; + if (IsNull(tabFitRight.derAccuracy) || isOdd) + derivative.Clear(); + else + derivative = data.DerivativeY(~tabFitRight.derOrder, ~tabFitRight.derAccuracy); + + refresh = true; + } + if (tabFitRight.opSG) { + int side = int(~tabFitRight.sgSize)/2; + if (!SavitzkyGolay_CheckParams(side, side, ~tabFitRight.sgDeg, ~tabFitRight.sgOrder)) + sg.Clear(); + else + sg = data.SavitzkyGolayY(~tabFitRight.sgDeg, ~tabFitRight.sgSize, ~tabFitRight.sgOrder); + + refresh = true; + } if (tabFitRight.opMax && newWidthMax != tabFitRight.width) { newWidthMax = tabFitRight.width; @@ -681,6 +729,8 @@ void ProcessingTab::OnShowEquation() tabFitLeft.scatter.Legend(6, pscatter->GetLegend(id) + String("-") + (show && tabFitRight.opSinusTend ? sinusTend.GetEquation(tabFitRight.numDecimals) : String(t_("Sinusoidal tend")))); tabFitLeft.scatter.Legend(7, pscatter->GetLegend(id) + String("-") + String(t_("Spline"))); + tabFitLeft.scatter.Legend(8, pscatter->GetLegend(id) + String("-") + String(Format(t_("Der_%d"), ~tabFitRight.derOrder))); + tabFitLeft.scatter.Legend(9, pscatter->GetLegend(id) + String("-") + String(Format(t_("S_G_%d"), ~tabFitRight.sgOrder))); tabFitLeft.scatter.Refresh(); } diff --git a/uppsrc/ScatterCtrl/Properties.h b/uppsrc/ScatterCtrl/Properties.h index c5de7c873..40242d8ea 100644 --- a/uppsrc/ScatterCtrl/Properties.h +++ b/uppsrc/ScatterCtrl/Properties.h @@ -286,6 +286,8 @@ private: PolynomialEquation3 cubic; SinEquation sinus, sinusTend; SplineEquation spline; + Vector derivative; + Vector sg; Vector upperEnvelope, lowerEnvelope; Vector movAvg, secAvg, cumAvg; DataXRange dataXRange; diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.lay b/uppsrc/ScatterCtrl/ScatterCtrl.lay index 941f056ac..67f7489c3 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.lay +++ b/uppsrc/ScatterCtrl/ScatterCtrl.lay @@ -180,31 +180,32 @@ LAYOUT(ProcessingTabFitLeft, 356, 281) ITEM(ScatterCtrl, scatter, SetPlotAreaLeftMargin(60).SetPlotAreaBottomMargin(50).ShowContextMenu(true).ShowPropertiesDlg(true).ShowProcessDlg(true).ShowButtons(true).HSizePosZ(0, 1).VSizePosZ(0, 0)) END_LAYOUT -LAYOUT(ProcessingTabFitRight, 232, 452) - ITEM(Option, opSeries, SetLabel(t_("Series")).LeftPosZ(4, 84).TopPosZ(3, 16)) - ITEM(Option, opAverage, SetLabel(t_("Average")).LeftPosZ(4, 64).TopPosZ(23, 16)) - ITEM(Option, opLinear, SetLabel(t_("Linear")).LeftPosZ(4, 64).TopPosZ(43, 16)) - ITEM(Option, opCuadratic, SetLabel(t_("Cuadratic")).LeftPosZ(4, 64).TopPosZ(63, 16)) - ITEM(Option, opCubic, SetLabel(t_("Cubic")).LeftPosZ(4, 64).TopPosZ(83, 16)) - ITEM(Option, opSinus, SetLabel(t_("Sinusoidal")).LeftPosZ(4, 64).TopPosZ(103, 16)) - ITEM(Option, opSinusTend, SetLabel(t_("Sin. tend.")).LeftPosZ(4, 64).TopPosZ(123, 16)) - ITEM(Option, opSpline, SetLabel(t_("Spline")).LeftPosZ(4, 128).TopPosZ(143, 16)) - ITEM(EditIntSpin, numDecimals, Max(20).Min(0).LeftPosZ(84, 36).TopPosZ(163, 19)) - ITEM(Option, showEquation, SetLabel(t_("Show Eq.")).LeftPosZ(128, 72).TopPosZ(163, 16)) - ITEM(Option, opMax, SetLabel(t_("Max curve")).LeftPosZ(4, 128).TopPosZ(187, 16)) - ITEM(Option, opMin, SetLabel(t_("Min curve")).LeftPosZ(4, 128).TopPosZ(207, 16)) - ITEM(Option, opMovAvg, SetLabel(t_("Moving Average")).LeftPosZ(4, 128).TopPosZ(227, 16)) - ITEM(Option, opCumAvg, SetLabel(t_("Cumulative Average")).LeftPosZ(4, 128).TopPosZ(268, 16)) - ITEM(Option, opSecAvg, SetLabel(t_("Sector Average")).LeftPosZ(4, 128).TopPosZ(247, 16)) - ITEM(Button, butAutoSensSector, SetLabel(t_("Autosens")).LeftPosZ(136, 64).TopPosZ(247, 15)) - ITEM(EditDoubleLostFocusSpin, width, LeftPosZ(136, 60).TopPosZ(211, 19)) - ITEM(Label, dv___17, SetLabel(t_("Max imp.:")).HSizePosZ(4, 144).TopPosZ(332, 19)) - ITEM(Label, dv___18, SetLabel(t_("R2 coeff.")).RightPosZ(0, 48).TopPosZ(4, 19)) - ITEM(Label, dv___19, SetLabel(t_("Num decimals:")).LeftPosZ(4, 80).TopPosZ(163, 19)) - ITEM(Label, dv___20, SetLabel(t_("Max:")).HSizePosZ(4, 144).TopPosZ(308, 19)) - ITEM(Label, dv___21, SetLabel(t_("StdDev:")).LeftPosZ(4, 56).TopPosZ(428, 19)) - ITEM(EditString, eMaxImp, SetEditable(false).HSizePosZ(64, 4).TopPosZ(332, 19)) - ITEM(EditDouble, eStdDev, SetEditable(false).HSizePosZ(64, 4).TopPosZ(428, 19)) +LAYOUT(ProcessingTabFitRight, 280, 484) + ITEM(Option, opSeries, SetLabel(t_("Series")).LeftPosZ(4, 84).TopPosZ(3, 19)) + ITEM(Option, opAverage, SetLabel(t_("Average")).LeftPosZ(4, 64).TopPosZ(23, 19)) + ITEM(Option, opLinear, SetLabel(t_("Linear")).LeftPosZ(4, 64).TopPosZ(43, 19)) + ITEM(Option, opCuadratic, SetLabel(t_("Cuadratic")).LeftPosZ(4, 64).TopPosZ(63, 19)) + ITEM(Option, opCubic, SetLabel(t_("Cubic")).LeftPosZ(4, 64).TopPosZ(83, 19)) + ITEM(Option, opSinus, SetLabel(t_("Sinusoidal")).LeftPosZ(4, 64).TopPosZ(103, 19)) + ITEM(Option, opSinusTend, SetLabel(t_("Sin. tend.")).LeftPosZ(4, 64).TopPosZ(123, 19)) + ITEM(Option, opSG, SetLabel(t_("S–G")).LeftPosZ(4, 36).TopPosZ(184, 19)) + ITEM(Option, opSpline, SetLabel(t_("Spline")).LeftPosZ(4, 128).TopPosZ(143, 19)) + ITEM(EditIntSpin, numDecimals, Max(20).Min(0).LeftPosZ(84, 36).TopPosZ(208, 19)) + ITEM(Option, showEquation, SetLabel(t_("Show Eq.")).LeftPosZ(128, 72).TopPosZ(208, 19)) + ITEM(Option, opMax, SetLabel(t_("Max curve")).LeftPosZ(4, 128).TopPosZ(232, 19)) + ITEM(Option, opMin, SetLabel(t_("Min curve")).LeftPosZ(4, 128).TopPosZ(252, 19)) + ITEM(Option, opMovAvg, SetLabel(t_("Moving Average")).LeftPosZ(4, 128).TopPosZ(272, 19)) + ITEM(Option, opCumAvg, SetLabel(t_("Cumulative Average")).LeftPosZ(4, 128).TopPosZ(313, 19)) + ITEM(Option, opSecAvg, SetLabel(t_("Sector Average")).LeftPosZ(4, 128).TopPosZ(292, 19)) + ITEM(Button, butAutoSensSector, SetLabel(t_("Autosens")).LeftPosZ(136, 64).TopPosZ(292, 15)) + ITEM(EditDoubleLostFocusSpin, width, LeftPosZ(136, 60).TopPosZ(256, 19)) + ITEM(Label, dv___18, SetLabel(t_("Max imp.:")).HSizePosZ(4, 144).TopPosZ(377, 19)) + ITEM(Label, dv___19, SetLabel(t_("R2 coeff.")).RightPosZ(0, 48).TopPosZ(4, 19)) + ITEM(Label, dv___20, SetLabel(t_("Num decimals:")).LeftPosZ(4, 80).TopPosZ(208, 19)) + ITEM(Label, dv___21, SetLabel(t_("Max:")).HSizePosZ(4, 144).TopPosZ(353, 19)) + ITEM(Label, dv___22, SetLabel(t_("StdDev:")).LeftPosZ(4, 56).TopPosZ(473, 19)) + ITEM(EditString, eMaxImp, SetEditable(false).HSizePosZ(64, 4).TopPosZ(377, 19)) + ITEM(EditDouble, eStdDev, SetEditable(false).HSizePosZ(64, 4).TopPosZ(473, 19)) ITEM(EditString, eqSinusTend, SetEditable(false).HSizePosZ(68, 52).TopPosZ(123, 19)) ITEM(EditDouble, r2Linear, SetEditable(false).RightPosZ(4, 44).TopPosZ(43, 19)) ITEM(EditDouble, r2Cuadratic, SetEditable(false).RightPosZ(4, 44).TopPosZ(63, 19)) @@ -213,18 +214,29 @@ LAYOUT(ProcessingTabFitRight, 232, 452) ITEM(EditDouble, r2Sinus, SetEditable(false).RightPosZ(4, 44).TopPosZ(103, 19)) ITEM(EditString, eqCubic, SetEditable(false).HSizePosZ(68, 52).TopPosZ(83, 19)) ITEM(EditDouble, r2Cubic, SetEditable(false).RightPosZ(4, 44).TopPosZ(83, 19)) - ITEM(EditString, eMax, SetEditable(false).HSizePosZ(64, 4).TopPosZ(308, 19)) - ITEM(Label, dv___33, SetLabel(t_("Average:")).HSizePosZ(4, 144).TopPosZ(380, 19)) - ITEM(EditDouble, eAverage, SetEditable(false).HSizePosZ(64, 4).TopPosZ(380, 19)) + ITEM(EditString, eMax, SetEditable(false).HSizePosZ(64, 4).TopPosZ(353, 19)) + ITEM(Label, dv___34, SetLabel(t_("Average:")).HSizePosZ(4, 144).TopPosZ(425, 19)) + ITEM(EditDouble, eAverage, SetEditable(false).HSizePosZ(64, 4).TopPosZ(425, 19)) ITEM(EditString, eqLinear, SetEditable(false).HSizePosZ(68, 52).TopPosZ(43, 19)) ITEM(EditString, eqCuadratic, SetEditable(false).HSizePosZ(68, 52).TopPosZ(63, 19)) ITEM(EditString, eqAverage, SetEditable(false).HSizePosZ(68, 52).TopPosZ(23, 19)) - ITEM(Label, dv___38, SetLabel(t_("Sensitivity")).LeftPosZ(136, 60).TopPosZ(195, 19)) - ITEM(LabelBox, dv___39, SetLabel(t_("Statistical data")).HSizePosZ(0, 4).TopPosZ(284, 24)) - ITEM(Label, dv___40, SetLabel(t_("RMS:")).LeftPosZ(4, 56).TopPosZ(404, 19)) - ITEM(EditDouble, eRMS, SetEditable(false).HSizePosZ(64, 4).TopPosZ(404, 19)) - ITEM(Label, dv___42, SetLabel(t_("Min:")).HSizePosZ(4, 144).TopPosZ(356, 19)) - ITEM(EditString, eMin, SetEditable(false).HSizePosZ(64, 4).TopPosZ(356, 19)) + ITEM(Label, dv___39, SetLabel(t_("Sensitivity")).LeftPosZ(136, 60).TopPosZ(240, 19)) + ITEM(LabelBox, dv___40, SetLabel(t_("Statistical data")).HSizePosZ(0, 4).TopPosZ(329, 24)) + ITEM(Label, dv___41, SetLabel(t_("RMS:")).LeftPosZ(4, 56).TopPosZ(449, 19)) + ITEM(EditDouble, eRMS, SetEditable(false).HSizePosZ(64, 4).TopPosZ(449, 19)) + ITEM(Label, dv___43, SetLabel(t_("Min:")).HSizePosZ(4, 144).TopPosZ(401, 19)) + ITEM(EditString, eMin, SetEditable(false).HSizePosZ(64, 4).TopPosZ(401, 19)) + ITEM(EditIntSpin, sgDeg, Max(5).Min(2).LeftPosZ(240, 36).TopPosZ(184, 19)) + ITEM(EditIntSpin, sgOrder, Min(0).LeftPosZ(80, 28).TopPosZ(184, 19)) + ITEM(Label, dv___47, SetLabel(t_("Order:")).LeftPosZ(44, 36).TopPosZ(184, 19)) + ITEM(Label, dv___48, SetLabel(t_("Deg:")).LeftPosZ(212, 28).TopPosZ(184, 19)) + ITEM(Option, opDerivative, SetLabel(t_("Der")).LeftPosZ(4, 36).TopPosZ(164, 19)) + ITEM(EditIntSpin, derOrder, Max(2).Min(1).LeftPosZ(80, 28).TopPosZ(164, 19)) + ITEM(Label, dv___51, SetLabel(t_("Order:")).LeftPosZ(44, 36).TopPosZ(164, 19)) + ITEM(EditIntSpin, derAccuracy, Max(8).Min(2).LeftPosZ(168, 36).TopPosZ(164, 19)) + ITEM(Label, dv___53, SetLabel(t_("Accuracy:")).LeftPosZ(116, 48).TopPosZ(164, 19)) + ITEM(EditIntSpin, sgSize, Min(5).LeftPosZ(168, 36).TopPosZ(184, 19)) + ITEM(Label, dv___55, SetLabel(t_("W. Size:")).LeftPosZ(116, 48).TopPosZ(184, 19)) END_LAYOUT LAYOUT(ProcessingTabOpLeft, 428, 328) diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.t b/uppsrc/ScatterCtrl/ScatterCtrl.t index eee966364..df26d2955 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.t +++ b/uppsrc/ScatterCtrl/ScatterCtrl.t @@ -267,6 +267,9 @@ esES("Salvando imagen del gr\303\241fico a fichero") euES("") frFR("") + +// ScatterCtrl.h + T_("x") caES("") esES("") @@ -292,6 +295,516 @@ euES("") frFR("") +// Properties.cpp + +T_("Dash \"%s\"") +caES("") +esES("Guiones \"%s\"") +euES("") +frFR("") + +T_("X min has to be lower than X max") +caES("") +esES("X min tiene que ser menor que X max") +euES("") +frFR("") + +T_("Y min has to be lower than Y max") +caES("") +esES("Y min tiene que ser menor que Y max") +euES("") +frFR("") + +T_("Y min2 has to be lower than Y max2") +caES("") +esES("Y min2 tiene que ser menor que Y max2") +euES("") +frFR("") + +T_("Draw") +caES("") +esES("'Draw'") +euES("") +frFR("") + +T_("Painter No Antialiased") +caES("") +esES("'Painter' sin antialias") +euES("") +frFR("") + +T_("Painter Antialiased") +caES("") +esES("'Painter' con antialias") +euES("") +frFR("") + +T_("Painter Subpixel") +caES("") +esES("'Painter' con subpixel") +euES("") +frFR("") + +T_("0\302\272") +caES("") +esES("") +euES("") +frFR("") + +T_("90\302\272") +caES("") +esES("") +euES("") +frFR("") + +T_("180\302\272") +caES("") +esES("") +euES("") +frFR("") + +T_("270\302\272") +caES("") +esES("") +euES("") +frFR("") + +T_("Name") +caES("Nom") +esES("Nombre") +euES("Izena") +frFR("Nom") + +T_("No mark") +caES("Sense marca") +esES("Sin marca") +euES("Marka gabe") +frFR("Sans marque") + +T_("You are going to delete '%s' series.&Do you agree?") +caES("") +esES("Vas a borrar la serie '%s'.&\302\277Est\303\241s de acuerdo?") +euES("") +frFR("") + + +// Processing.cpp + +T_("Scatter properties") +caES("Propietats de gr\303\240fic") +esES("Propiedades de gr\303\241fico") +euES("Grafikoa propietateak") +frFR("Propri\303\251t\303\251s des graphes") + +T_("Measures") +caES("Mesures") +esES("Medidas") +euES("Neurriak") +frFR("Mesures") + +T_("Texts") +caES("Textos") +esES("Textos") +euES("Testuak") +frFR("Textes") + +T_("Legend") +caES("Llegenda") +esES("Leyenda") +euES("Kondaira") +frFR("L\303\251gende") + +T_("Series") +caES("S\303\250ries") +esES("Series") +euES("Series") +frFR("S\303\250ries") + +T_("General") +caES("") +esES("") +euES("") +frFR("") + +T_("Id") +caES("") +esES("") +euES("") +frFR("") + +T_("Processing") +caES("") +esES("Procesado") +euES("") +frFR("") + +T_("Frequency") +caES("") +esES("Frecuencia") +euES("") +frFR("") + +T_("Operations") +caES("") +esES("Operaciones") +euES("") +frFR("") + +T_("Best fit") +caES("") +esES("Mejor ajuste") +euES("") +frFR("") + +T_("Histogram") +caES("") +esES("") +euES("") +frFR("") + +T_("To show real equation coefficients with different precisions or just in " + "text") +caES("") +esES("Para mostrar los coeficientes de la ecuaci\303\263n real con diferentes " + "precisiones o solo en el texto") +euES("") +frFR("") + +T_("Min. R2 to plot the equation") +caES("") +esES("M\303\255n. R2 para mostrar ecuaci\303\263n") +euES("") +frFR("") + +T_("User suppled equation. Initial guess values separated with ';'") +caES("") +esES("Ecuaci\303\263n de usuario. Valores iniciales estimados separados con " + "';'") +euES("") +frFR("") + +T_("Type") +caES("") +esES("Tipo") +euES("") +frFR("") + +T_("Equation") +caES("") +esES("Ecuaci\303\263n") +euES("") +frFR("") + +T_("R2") +caES("") +esES("") +euES("") +frFR("") + +T_("It tries to fit the series with the supported equations") +caES("") +esES("Intenta ajustar la serie con las ecuaciones incluidas") +euES("") +frFR("") + +T_("X") +caES("") +esES("") +euES("") +frFR("") + +T_("Y") +caES("") +esES("") +euES("") +frFR("") + +T_("Select all") +caES("Seleccionar tot") +esES("Seleccionar todo") +euES("Hautatu guztiak") +frFR("S\303\251lectionner tout") + +T_("Select all rows") +caES("Seleccionar totes les files") +esES("Seleccionar todas las filas") +euES("Hautatu errenkada guztiak") +frFR("S\303\251lectionnez toutes les lignes") + +T_("Copy") +caES("Copiar") +esES("Copiar") +euES("Kopiatu") +frFR("Copier") + +T_("Copy selected rows") +caES("") +esES("Copiar files selecc.") +euES("") +frFR("") + +T_("'x >' has to be lower than 'x <'") +caES("") +esES("'x >' tiene que ser menor que 'x <'") +euES("") +frFR("") + +T_("Max") +caES("") +esES("M\303\241x") +euES("") +frFR("") + +T_("Min") +caES("") +esES("M\303\255n") +euES("") +frFR("") + +T_("MovAvg") +caES("") +esES("MedMov") +euES("") +frFR("") + +T_("SecAvg") +caES("") +esES("MedSeg") +euES("") +frFR("") + +T_("CumAvg") +caES("") +esES("AcumProm") +euES("") +frFR("") + +T_("Impossible to calculate FFT from a not sampled series") +caES("") +esES("Imposible calcular FFT de una serie no muestreada") +euES("") +frFR("") + +T_("Insufficient data to calculate FFT") +caES("") +esES("Datos insufucientes para calcular FFT") +euES("") +frFR("") + +T_("Sampling time changes from %f to %f") +caES("") +esES("El tiempo de muestreo varia entre %f y %f") +euES("") +frFR("") + +T_("Processed") +caES("") +esES("Procesado") +euES("") +frFR("") + +T_("Impossible to calculate histogram from a not sampled series") +caES("") +esES("") +euES("") +frFR("") + +T_("Insufficient data to calculate histogram") +caES("") +esES("") +euES("") +frFR("") + +T_("Average") +caES("") +esES("Promedio") +euES("") +frFR("") + +T_("Linear") +caES("") +esES("Lineal") +euES("") +frFR("") + +T_("Cuadratic") +caES("") +esES("Cuadr\303\241tico") +euES("") +frFR("") + +T_("Cubic") +caES("") +esES("C\303\272bico") +euES("") +frFR("") + +T_("Sinusoidal") +caES("") +esES("") +euES("") +frFR("") + +T_("Sinusoidal tend") +caES("") +esES("Tend. sinusoidal") +euES("") +frFR("") + +T_("Spline") +caES("") +esES("") +euES("") +frFR("") + +T_("Incorrect sampling time") +caES("") +esES("Tiempo de muestreo incorrecto") +euES("") +frFR("") + +T_("Error obtaining FFT") +caES("") +esES("Error obteniendo FFT") +euES("") +frFR("") + +T_("FFT") +caES("") +esES("") +euES("") +frFR("") + +T_("FFT-phase [rad]") +caES("") +esES("FFT-fase [rad]") +euES("") +frFR("") + +T_("Power Spectral Density") +caES("") +esES("Espectro de densidad energ\303\251tica") +euES("") +frFR("") + +T_("Frequency [Hz]") +caES("") +esES("Frecuencia [Hz]") +euES("") +frFR("") + +T_("Period [sec]") +caES("") +esES("Periodo [seg]") +euES("") +frFR("") + +T_("Min val %d has to be lower than Max val %f") +caES("") +esES("") +euES("") +frFR("") + +T_("Number") +caES("") +esES("") +euES("") +frFR("") + + +// Properties.h + +T_("Font") +caES("") +esES("Fuente") +euES("") +frFR("") + + +// Data.cpp + +T_("Scatter data") +caES("Dades del gr\303\240fic") +esES("Datos del gr\303\241fico") +euES("Datuak taula") +frFR("Tableau de donn\303\251es") + +T_("All") +caES("") +esES("Todo") +euES("") +frFR("") + +T_("%s file") +caES("Fitxer %s") +esES("Fichero %s") +euES("Fitxategia %s") +frFR("Fichier %s") + +T_("Comma separated values (.csv)") +caES("") +esES("Valores separados por coma (.csv)") +euES("") +frFR("") + +T_("Saving plot data") +caES("") +esES("Salvando los datos del gr\303\241fico") +euES("") +frFR("") + +T_("Plot data has not been saved") +caES("") +esES("Los datos del gr\303\241fico no han sido salvados") +euES("") +frFR("") + +T_("No row selected") +caES("") +esES("Ninguna fila seleccionada") +euES("") +frFR("") + +T_("Selected %d rows") +caES("") +esES("Seleccionadas %d filas") +euES("") +frFR("") + +T_("Copy selected rows to clipboard") +caES("") +esES("Copiar filas seleccionadas al portapapeles") +euES("") +frFR("") + +T_("Save to file") +caES("Guardar a fitxer") +esES("Guardar en fichero") +euES("Gorde fitxategira") +frFR("Enregistrer dans un fichier") + +T_("Save to .csv file") +caES("") +esES("Salvar a fichero .csv") +euES("") +frFR("") + + +// PieCtrl.cpp + +T_("Pie plot") +caES("") +esES("Gr\303\241fico de tarta") +euES("") +frFR("") + +T_("Saving plot to PNG or JPEG file") +caES("Guardant gr\303\240fic en fitxer PNG o JPEG") +esES("Guardando gr\303\241fico en fichero PNG o JPEG") +euES("Aurrezteko grafikoa PNG edo JPEG fitxategia") +frFR("Enregistrement plot visant \303\240 fichier PNG ou JPEG") + + // ScatterCtrl.lay T_("OK") @@ -348,6 +861,12 @@ esES("") euES("") frFR("") +T_("Numbers") +caES("") +esES("") +euES("") +frFR("") + T_("Reticle") caES("") esES("Ret\303\255cula") @@ -360,6 +879,12 @@ esES("Fijar") euES("") frFR("") +T_("Grid") +caES("") +esES("") +euES("") +frFR("") + T_("Color:") caES("Color:") esES("Color:") @@ -678,54 +1203,12 @@ esES("Cerrar") euES("Itxi") frFR("Fermer") -T_("Series") -caES("S\303\250ries") -esES("Series") -euES("Series") -frFR("S\303\250ries") - -T_("Average") -caES("") -esES("Promedio") -euES("") -frFR("") - -T_("Linear") -caES("") -esES("Lineal") -euES("") -frFR("") - -T_("Cuadratic") -caES("") -esES("Cuadr\303\241tico") -euES("") -frFR("") - -T_("Cubic") -caES("") -esES("C\303\272bico") -euES("") -frFR("") - -T_("Sinusoidal") -caES("") -esES("") -euES("") -frFR("") - T_("Sin. tend.") caES("") esES("Tend. sin.") euES("") frFR("") -T_("Spline") -caES("") -esES("") -euES("") -frFR("") - T_("Show Eq.") caES("") esES("Most. eq.") @@ -852,12 +1335,6 @@ esES("seg") euES("") frFR("") -T_("FFT") -caES("") -esES("") -euES("") -frFR("") - T_("Sampling time:") caES("") esES("Tiempo de muestreo:") @@ -966,6 +1443,48 @@ esES("Ecuacion usuario:") euES("") frFR("") +T_("Number: ") +caES("") +esES("") +euES("") +frFR("") + +T_("Axis") +caES("") +esES("") +euES("") +frFR("") + +T_("Val:") +caES("") +esES("") +euES("") +frFR("") + +T_(" ") +caES("") +esES("") +euES("") +frFR("") + +T_("Staggered") +caES("") +esES("") +euES("") +frFR("") + +T_("Accumulative") +caES("") +esES("") +euES("") +frFR("") + +T_("Normalize") +caES("") +esES("") +euES("") +frFR("") + T_("Bold") caES("") esES("Negrita") @@ -983,423 +1502,3 @@ caES("") esES("NoAntialias") euES("") frFR("") - - -// Properties.cpp - -T_("Dash \"%s\"") -caES("") -esES("Guiones \"%s\"") -euES("") -frFR("") - -T_("X min has to be lower than X max") -caES("") -esES("X min tiene que ser menor que X max") -euES("") -frFR("") - -T_("Y min has to be lower than Y max") -caES("") -esES("Y min tiene que ser menor que Y max") -euES("") -frFR("") - -T_("Y min2 has to be lower than Y max2") -caES("") -esES("Y min2 tiene que ser menor que Y max2") -euES("") -frFR("") - -T_("Draw") -caES("") -esES("'Draw'") -euES("") -frFR("") - -T_("Painter No Antialiased") -caES("") -esES("'Painter' sin antialias") -euES("") -frFR("") - -T_("Painter Antialiased") -caES("") -esES("'Painter' con antialias") -euES("") -frFR("") - -T_("Painter Subpixel") -caES("") -esES("'Painter' con subpixel") -euES("") -frFR("") - -T_("0\302\272") -caES("") -esES("") -euES("") -frFR("") - -T_("90\302\272") -caES("") -esES("") -euES("") -frFR("") - -T_("180\302\272") -caES("") -esES("") -euES("") -frFR("") - -T_("270\302\272") -caES("") -esES("") -euES("") -frFR("") - -T_("Name") -caES("Nom") -esES("Nombre") -euES("Izena") -frFR("Nom") - -T_("No mark") -caES("Sense marca") -esES("Sin marca") -euES("Marka gabe") -frFR("Sans marque") - -T_("You are going to delete '%s' series.&Do you agree?") -caES("") -esES("Vas a borrar la serie '%s'.&\302\277Est\303\241s de acuerdo?") -euES("") -frFR("") - - -// Properties.h - -T_("Font") -caES("") -esES("Fuente") -euES("") -frFR("") - - -// Processing.cpp - -T_("Scatter properties") -caES("Propietats de gr\303\240fic") -esES("Propiedades de gr\303\241fico") -euES("Grafikoa propietateak") -frFR("Propri\303\251t\303\251s des graphes") - -T_("Measures") -caES("Mesures") -esES("Medidas") -euES("Neurriak") -frFR("Mesures") - -T_("Texts") -caES("Textos") -esES("Textos") -euES("Testuak") -frFR("Textes") - -T_("Legend") -caES("Llegenda") -esES("Leyenda") -euES("Kondaira") -frFR("L\303\251gende") - -T_("General") -caES("") -esES("") -euES("") -frFR("") - -T_("Id") -caES("") -esES("") -euES("") -frFR("") - -T_("Processing") -caES("") -esES("Procesado") -euES("") -frFR("") - -T_("Frequency") -caES("") -esES("Frecuencia") -euES("") -frFR("") - -T_("Operations") -caES("") -esES("Operaciones") -euES("") -frFR("") - -T_("Best fit") -caES("") -esES("Mejor ajuste") -euES("") -frFR("") - -T_("To show real equation coefficients with different precisions or just in " - "text") -caES("") -esES("Para mostrar los coeficientes de la ecuaci\303\263n real con diferentes " - "precisiones o solo en el texto") -euES("") -frFR("") - -T_("Min. R2 to plot the equation") -caES("") -esES("M\303\255n. R2 para mostrar ecuaci\303\263n") -euES("") -frFR("") - -T_("User suppled equation. Initial guess values separated with ';'") -caES("") -esES("Ecuaci\303\263n de usuario. Valores iniciales estimados separados con " - "';'") -euES("") -frFR("") - -T_("Type") -caES("") -esES("Tipo") -euES("") -frFR("") - -T_("Equation") -caES("") -esES("Ecuaci\303\263n") -euES("") -frFR("") - -T_("R2") -caES("") -esES("") -euES("") -frFR("") - -T_("It tries to fit the series with the supported equations") -caES("") -esES("Intenta ajustar la serie con las ecuaciones incluidas") -euES("") -frFR("") - -T_("Select all") -caES("Seleccionar tot") -esES("Seleccionar todo") -euES("Hautatu guztiak") -frFR("S\303\251lectionner tout") - -T_("Select all rows") -caES("Seleccionar totes les files") -esES("Seleccionar todas las filas") -euES("Hautatu errenkada guztiak") -frFR("S\303\251lectionnez toutes les lignes") - -T_("Copy") -caES("Copiar") -esES("Copiar") -euES("Kopiatu") -frFR("Copier") - -T_("Copy selected rows") -caES("") -esES("Copiar files selecc.") -euES("") -frFR("") - -T_("'x >' has to be lower than 'x <'") -caES("") -esES("'x >' tiene que ser menor que 'x <'") -euES("") -frFR("") - -T_("Max") -caES("") -esES("M\303\241x") -euES("") -frFR("") - -T_("Min") -caES("") -esES("M\303\255n") -euES("") -frFR("") - -T_("MovAvg") -caES("") -esES("MedMov") -euES("") -frFR("") - -T_("SecAvg") -caES("") -esES("MedSeg") -euES("") -frFR("") - -T_("CumAvg") -caES("") -esES("AcumProm") -euES("") -frFR("") - -T_("Impossible to calculate FFT from a not sampled series") -caES("") -esES("Imposible calcular FFT de una serie no muestreada") -euES("") -frFR("") - -T_("Insufficient data to calculate FFT") -caES("") -esES("Datos insufucientes para calcular FFT") -euES("") -frFR("") - -T_("Sampling time changes from %f to %f") -caES("") -esES("El tiempo de muestreo varia entre %f y %f") -euES("") -frFR("") - -T_("Processed") -caES("") -esES("Procesado") -euES("") -frFR("") - -T_("Sinusoidal tend") -caES("") -esES("Tend. sinusoidal") -euES("") -frFR("") - -T_("Incorrect sampling time") -caES("") -esES("Tiempo de muestreo incorrecto") -euES("") -frFR("") - -T_("Error obtaining FFT") -caES("") -esES("Error obteniendo FFT") -euES("") -frFR("") - -T_("FFT-phase [rad]") -caES("") -esES("FFT-fase [rad]") -euES("") -frFR("") - -T_("Power Spectral Density") -caES("") -esES("Espectro de densidad energ\303\251tica") -euES("") -frFR("") - -T_("Frequency [Hz]") -caES("") -esES("Frecuencia [Hz]") -euES("") -frFR("") - -T_("Period [sec]") -caES("") -esES("Periodo [seg]") -euES("") -frFR("") - - -// Data.cpp - -T_("Scatter data") -caES("Dades del gr\303\240fic") -esES("Datos del gr\303\241fico") -euES("Datuak taula") -frFR("Tableau de donn\303\251es") - -T_("All") -caES("") -esES("Todo") -euES("") -frFR("") - -T_("%s file") -caES("Fitxer %s") -esES("Fichero %s") -euES("Fitxategia %s") -frFR("Fichier %s") - -T_("Comma separated values (.csv)") -caES("") -esES("Valores separados por coma (.csv)") -euES("") -frFR("") - -T_("Saving plot data") -caES("") -esES("Salvando los datos del gr\303\241fico") -euES("") -frFR("") - -T_("Plot data has not been saved") -caES("") -esES("Los datos del gr\303\241fico no han sido salvados") -euES("") -frFR("") - -T_("No row selected") -caES("") -esES("Ninguna fila seleccionada") -euES("") -frFR("") - -T_("Selected %d rows") -caES("") -esES("Seleccionadas %d filas") -euES("") -frFR("") - -T_("Copy selected rows to clipboard") -caES("") -esES("Copiar filas seleccionadas al portapapeles") -euES("") -frFR("") - -T_("Save to file") -caES("Guardar a fitxer") -esES("Guardar en fichero") -euES("Gorde fitxategira") -frFR("Enregistrer dans un fichier") - -T_("Save to .csv file") -caES("") -esES("Salvar a fichero .csv") -euES("") -frFR("") - - -// PieCtrl.cpp - -T_("Pie plot") -caES("") -esES("Gr\303\241fico de tarta") -euES("") -frFR("") - -T_("Saving plot to PNG or JPEG file") -caES("Guardant gr\303\240fic en fitxer PNG o JPEG") -esES("Guardando gr\303\241fico en fichero PNG o JPEG") -euES("Aurrezteko grafikoa PNG edo JPEG fitxategia") -frFR("Enregistrement plot visant \303\240 fichier PNG ou JPEG") diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.usc b/uppsrc/ScatterCtrl/ScatterCtrl.usc index b746193f7..071d943f8 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.usc +++ b/uppsrc/ScatterCtrl/ScatterCtrl.usc @@ -34,9 +34,9 @@ ctrl ScatterCtrl { Font SetLabelsFont; Color SetLabelsColor = :Black; Color SetAxisColor = :Black; - int SetAxisWidth = 6; + double SetAxisWidth = 0.5; Color SetGridColor = :Color(102,102,102); - int SetGridWidth = 1; + double SetGridWidth = 1; bool ShowHGrid = true; bool ShowVGrid = true; bool ShowInfo = true;