- mySimpleXYPlot.setUserDomainOrigin(0);\r
- mySimpleXYPlot.setUserRangeOrigin(0);\r
- mySimpleXYPlot.setRangeLabel("impuse (n)");\r
- mySimpleXYPlot.setDomainLabel("time (s)");\r
- mySimpleXYPlot.addMarker(new YValueMarker(motor.getThrustCurveMotor().getAverageThrustEstimate(),"average" ));\r
- mySimpleXYPlot.disableAllMarkup();\r
-\r
-\r
- try {\r
- mySeries = new SimpleXYSeries( \r
- fromArray(motor.getThrustCurveMotor().getTimePoints()),\r
- fromArray(motor.getThrustCurveMotor().getThrustPoints()),\r
- motor.getThrustCurveMotor().getDesignation());\r
- } catch ( Exception ex ) {\r
-\r
- Vector<Double> data = new Vector<Double>();\r
- data.add(0.0);\r
- data.add(0.0);\r
- data.add(1.0);\r
- data.add(1.0);\r
- mySeries = new SimpleXYSeries(data, SimpleXYSeries.ArrayFormat.XY_VALS_INTERLEAVED,"no data");\r
- }\r
-\r
- mySimpleXYPlot.addSeries(mySeries, LineAndPointRenderer.class,\r
- new LineAndPointFormatter(Color.rgb(0, 255, 0), Color.rgb(200, 0, 0), null));\r
-\r
- //Set of internal variables for keeping track of the boundaries\r
- mySimpleXYPlot.calculateMinMaxVals();\r
-\r
- mySimpleXYPlot.redraw();\r
-\r
- minXY=new PointF(mySimpleXYPlot.getCalculatedMinX().floatValue(),mySimpleXYPlot.getCalculatedMinY().floatValue());\r
- maxXY=new PointF(mySimpleXYPlot.getCalculatedMaxX().floatValue(),mySimpleXYPlot.getCalculatedMaxY().floatValue());\r
-\r
- absMinX = minXY.x;\r
- absMaxX = maxXY.x;\r
-\r
- }\r
-\r
- private float mPosX;\r
- private float mPosY;\r
-\r
- private float mLastTouchX;\r
- private float mLastTouchY;\r
-\r
- private int mActivePointerId = -1;\r
-\r
- @Override\r
- public boolean onTouch(View arg0, MotionEvent event) {\r
- mScaleDetector.onTouchEvent(event);\r
-\r
- final int action = event.getAction();\r
- switch ( action & MotionEvent.ACTION_MASK ) {\r
- case MotionEvent.ACTION_DOWN: {\r
- final float x = event.getX();\r
- final float y = event.getY();\r
-\r
- mLastTouchX = x;\r
- mLastTouchY = y;\r
-\r
- mActivePointerId = event.getPointerId(0);\r
- break;\r
- }\r
-\r
- case MotionEvent.ACTION_MOVE: {\r
- final int pointerIndex = event.findPointerIndex(mActivePointerId);\r
- final float x = event.getX(pointerIndex);\r
- final float y = event.getY(pointerIndex);\r
-\r
- if (!mScaleDetector.isInProgress()) {\r
- final float dx = x - mLastTouchX;\r
- final float dy = y - mLastTouchY;\r
-\r
- mPosX += dx;\r
- mPosY += dy;\r
- scroll(dx);\r
- // do scroll.\r
-\r
+ XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(1);\r
+\r
+ renderer.setAxisTitleTextSize(16);\r
+ renderer.setChartTitleTextSize(20);\r
+ renderer.setLabelsTextSize(15);\r
+ renderer.setLegendTextSize(15);\r
+ renderer.setPointSize(5f);\r
+ renderer.setXLabels(10);\r
+ renderer.setYLabels(10);\r
+ renderer.setShowGrid(true);\r
+ renderer.setZoomButtonsVisible(false);\r
+ renderer.setZoomEnabled(false,false);\r
+ renderer.setPanEnabled(false,false);\r
+ renderer.setMargins(new int[] { 50, 40, 10, 20 });\r
+ renderer.setShowLegend(false);\r
+ renderer.setAxesColor(Color.LTGRAY);\r
+ renderer.setLabelsColor(Color.LTGRAY);\r
+\r
+ renderer.setChartTitle(motor.getManufacturer() + " " + motor.getDesignation());\r
+\r
+ renderer.setXTitle("time (s)");\r
+ renderer.setXLabelsAlign(Align.RIGHT);\r
+\r
+ renderer.setYTitle("impuse (n)");\r
+ renderer.setYLabelsAlign(Align.RIGHT,0);\r
+\r
+ XYSeriesRenderer r = new XYSeriesRenderer();\r
+ r.setColor(Color.RED);\r
+ r.setPointStyle(PointStyle.CIRCLE);\r
+ r.setFillPoints(true);\r
+ renderer.addSeriesRenderer(r);\r
+ // setting the YAximMin to 0 locks the origins.\r
+ renderer.setYAxisMin(0.0, 0);\r
+\r
+ // TODO get markers working in achartengine\r
+ //YValueMarker average = new YValueMarker(motor.getThrustCurveMotor().getAverageThrustEstimate(),"average" );\r
+ //average.getLinePaint().setColor(Color.BLACK);\r
+ //average.getTextPaint().setColor(Color.BLACK);\r
+ //mySimpleXYPlot.addMarker( average );\r
+\r
+ XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();\r
+\r
+ XYSeries series = new XYSeries(motor.getDesignation(), 0);\r
+ \r
+ double[] timePoints = motor.getTimePoints();\r
+ double[] thrustPoints = motor.getThrustPoints();\r
+\r
+ // We are going to abuse this loop to also compute the Y axis max.\r
+ int maxy = 0;\r
+ int datasize = timePoints.length;\r
+ for( int i = 0; i<datasize; i++ ) {\r
+ series.add(timePoints[i], thrustPoints[i]);\r
+ int ceil =(int) Math.ceil(thrustPoints[i]);\r
+ if ( ceil > maxy ) {\r
+ maxy = ceil;\r