mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
ScatterDraw_Demo: Added spline
git-svn-id: svn://ultimatepp.org/upp/trunk@15127 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
44d2a01a92
commit
ef0dece1ad
2 changed files with 31 additions and 43 deletions
|
|
@ -3,6 +3,7 @@
|
|||
using namespace Upp;
|
||||
|
||||
#include <plugin/png/png.h>
|
||||
#include <PdfDraw/PdfDraw.h>
|
||||
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
|
|
@ -10,57 +11,43 @@ CONSOLE_APP_MAIN
|
|||
StdLogSetup(LOG_COUT|LOG_FILE);
|
||||
|
||||
UppLog() << "\nScatterDraw_Demo";
|
||||
UppLog() << "\nScatter painted to Image and saved to file";
|
||||
|
||||
String fileName = GetExeDirFile("Scatter");
|
||||
|
||||
ScatterDraw scatter;
|
||||
Vector<Pointf> s1;
|
||||
double x[] = {20, 30, 40, 50, 60};
|
||||
double y[] = {34, 45, 49, 44, 56};
|
||||
Vector<Pointf> s1 = {{10,14}, {20,65}, {30,29}, {40,32}, {50,12}};
|
||||
Vector<double> x = {20, 30, 40, 50, 60};
|
||||
Vector<double> y = {34, 85, 49, 72, 56};
|
||||
|
||||
scatter.SerializeData(true);
|
||||
UppLog() << "\nPreparing scatter";
|
||||
|
||||
bool loaded = false;
|
||||
if (FileExists(fileName + ".xml")) {
|
||||
LoadFromXMLFile(scatter, fileName + ".xml");
|
||||
loaded = true;
|
||||
} else if (FileExists(fileName + ".json")) {
|
||||
LoadFromJsonFile(scatter, fileName + ".json");
|
||||
loaded = true;
|
||||
} else if (FileExists(fileName + ".bin")) {
|
||||
LoadFromFile(scatter, fileName + ".bin");
|
||||
loaded = true;
|
||||
}
|
||||
scatter.AddSeries(s1).Legend("Series 1").NoPlot().Units("ºC", "seg");
|
||||
|
||||
scatter.AddSeries(x, y).Units("ºC", "seg").Legend("Series 2").Stroke(5, Null)
|
||||
.Dash(LINE_DASHED).MarkStyle<SquareMarkPlot>().MarkWidth(12);
|
||||
|
||||
SplineEquation spline;
|
||||
VectorPointf s1data(s1);
|
||||
spline.Fit(s1data);
|
||||
scatter.AddSeries(spline).Legend("Series 1 Softened").NoMark().Dash(LINE_SOLID).Stroke(1.5);
|
||||
|
||||
scatter.SetXYMin(10, 0).SetRange(50, 100).SetMinUnits(20, 0).SetMajorUnits(10, 20); // Done by hand
|
||||
|
||||
scatter.SetTitle("ScatterDraw_Demo").SetTitleFont(SansSerif(14).Bold());
|
||||
scatter.SetLabelY("Temperature").SetLabelX("Time").SetLabelsFont(SansSerif(12));
|
||||
scatter.SetPlotAreaLeftMargin(40).SetPlotAreaRightMargin(30).SetPlotAreaTopMargin(40).SetPlotAreaBottomMargin(50);
|
||||
scatter.SetSize(Size(1000, 500));
|
||||
scatter.SetMode(ScatterDraw::MD_ANTIALIASED);
|
||||
scatter.SetPlotAreaLeftMargin(70);
|
||||
scatter.SetLegendAnchor(ScatterDraw::RIGHT_TOP);
|
||||
|
||||
if (loaded) {
|
||||
UppLog() << "\nRead scatter from file";
|
||||
fileName = fileName + "+";
|
||||
} else {
|
||||
UppLog() << "\nPreparing scatter";
|
||||
|
||||
s1 << Pointf(10,14) << Pointf(20,25) << Pointf(30,29) << Pointf(40,24) << Pointf(50,36);
|
||||
|
||||
scatter.AddSeries(s1).Legend("Series 1").NoMark().Units("ºC", "seg");
|
||||
|
||||
scatter.AddSeries(x, y, 5).Units("ºC", "seg").Legend("Series 2").Stroke(5, Null)
|
||||
.Dash(LINE_DASHED).MarkStyle<SquareMarkPlot>().MarkWidth(12);
|
||||
|
||||
scatter.SetXYMin(10, 0).SetRange(50, 100).SetMinUnits(20, 0).SetMajorUnits(10, 20); // Done by hand
|
||||
//scatter.ZoomToFit(); // Done automatically
|
||||
|
||||
scatter.SetTitle("ScatterDraw_Demo").SetTitleFont(SansSerif(14).Bold());
|
||||
scatter.SetLabelY("Temperature").SetLabelX("Time").SetLabelsFont(SansSerif(12));
|
||||
scatter.SetPlotAreaLeftMargin(40).SetPlotAreaRightMargin(30).SetPlotAreaTopMargin(40).SetPlotAreaBottomMargin(50);
|
||||
scatter.SetSize(Size(1000, 500));
|
||||
scatter.SetMode(ScatterDraw::MD_ANTIALIASED);
|
||||
scatter.SetLegendAnchor(ScatterDraw::RIGHT_TOP);
|
||||
}
|
||||
PNGEncoder().SaveFile(fileName + ".png", scatter.GetImage());
|
||||
StoreAsJsonFile(scatter, fileName + ".json", true);
|
||||
StoreAsXMLFile(scatter, "Scatter", fileName + ".xml");
|
||||
StoreToFile(scatter, fileName + ".bin");
|
||||
|
||||
PdfDraw pdf(Size(1000, 500));
|
||||
scatter.SetSize(Size(1000, 500));
|
||||
scatter.SetDrawing(pdf, false);
|
||||
SaveFile(fileName + ".pdf", pdf.Finish());
|
||||
|
||||
UppLog() << "\nSaved '" << fileName << "'";
|
||||
#ifdef flagDEBUG
|
||||
Cout() << "\nPress enter key to end";
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ description "Scatter series without GUI\377";
|
|||
uses
|
||||
Core,
|
||||
ScatterDraw,
|
||||
plugin\png;
|
||||
plugin\png,
|
||||
PdfDraw;
|
||||
|
||||
file
|
||||
ScatterDraw_Demo.cpp;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue