The xGraph Class and B4XLib allows graphic analysis of signals.
It works on all three products: B4A, B4i and B4J.
The graph holds a given number of curves (10 by default) with a given number of samples (10000 by default) these values can be defined in the Designer.
All curves have the same number of samples with the same X signal.
What can be done:
 Draw up to 4 curves on the same graph.
 Show values when moving the cursor on the graph.
 Zooming, either with the cursor or setting in the code.
 Different scale modes.
 Different methods on curves.
 Copy a curve to another location.
 Add a value to a curve.
 Multiply a curve by a value.
 Add two curves and save the result in another curve.
 Multiply two curves and save the result in another curve.
 Calculate the integral of a curve and save the result in another curve.
 Calculate the derivative of a curve and save the result in another curve.
Attached the xGraphDemo.zip file contains three demo program using the xGraph.b4xlib library,
the xGraph.b4xlib library file, the xGraph.bas file and the xGraph.xml file.
The xGraph library needs the XUI, iXUI, or jXUI libraries.
The xGraphDemo programs need the XUI Views.b4xlib library.
EDIT: 2020.06.23 Version 1.3
Added GraphWithMissingData and MissingDataValue properties
Updated the Tag property according to Erels recommandation:
Added two cursors with display of the curvevalues.
Added a Touch event which return
Added a CursorPositionChanged event returning the CursoorIndex and XIndex.
Added these properties XIndexBegin, XIndexEnd. GraphLeft, GraphTop, GraphWidth and GraphHeight
Version 1.2 2020.02.23
Set CurveColor to Public
EDIT: 2019.12.14 Version 1.1
Amended bug reported HERE
xGraph
Author: Klaus CHRISTL (klaus)
Version: 1.3
It works on all three products: B4A, B4i and B4J.
The graph holds a given number of curves (10 by default) with a given number of samples (10000 by default) these values can be defined in the Designer.
All curves have the same number of samples with the same X signal.
What can be done:
 Draw up to 4 curves on the same graph.
 Show values when moving the cursor on the graph.
 Zooming, either with the cursor or setting in the code.
 Different scale modes.
 Different methods on curves.
 Copy a curve to another location.
 Add a value to a curve.
 Multiply a curve by a value.
 Add two curves and save the result in another curve.
 Multiply two curves and save the result in another curve.
 Calculate the integral of a curve and save the result in another curve.
 Calculate the derivative of a curve and save the result in another curve.
Attached the xGraphDemo.zip file contains three demo program using the xGraph.b4xlib library,
the xGraph.b4xlib library file, the xGraph.bas file and the xGraph.xml file.
The xGraph library needs the XUI, iXUI, or jXUI libraries.
The xGraphDemo programs need the XUI Views.b4xlib library.
EDIT: 2020.06.23 Version 1.3
Added GraphWithMissingData and MissingDataValue properties
Updated the Tag property according to Erels recommandation:
Android Tutorial  [B4X] How to get <custom view here> from <CLV or any other container>
This is a common question and for a good reason. Custom views classes are not views by themselves. The views tree only holds views. This means that this code cannot work: Dim B4XFloatTextField1 As B4XFloatTextField = CLV.GetPanel(x).GetView(y) The actual view that is added to the views tree...
www.b4x.com
Added a Touch event which return
Added a CursorPositionChanged event returning the CursoorIndex and XIndex.
Added these properties XIndexBegin, XIndexEnd. GraphLeft, GraphTop, GraphWidth and GraphHeight
Version 1.2 2020.02.23
Set CurveColor to Public
EDIT: 2019.12.14 Version 1.1
Amended bug reported HERE
xGraph
Author: Klaus CHRISTL (klaus)
Version: 1.3
 xGraph
 Functions:
 AddCursor (Color As Int)
Adds a cursor with the given color by touching the graph  CalcAddValue (CurveIndex As Int, Value As Double, ZoomedPartOnly As Boolean)
Adds a value to the given cuve
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcDerivative (SourceIndex As Int, DestinationIndex As Int, ZoomedPartOnly As Boolean)
Calculates the derivative of the source curve and copies the result in the destination curve
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcDevide2Curves (SourceIndex1 As Int, SourceIndex2 As Int, DestinationIndex As Int, ZoomedPartOnly As Boolean)
Devides two curves and copies the result in the destination curve
Curve(DestinationIndex) = Curve(SourceIndex1) / Curve(SourceIndex2)
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcIntegral (SourceIndex As Int, DestinationIndex As Int, InitilalCondition As Double, ZoomedPartOnly As Boolean)
Calculates the integral of the source curve and copies the result in the destination curve
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcMeanValue (CurveIndex As Int, ZoomedPartOnly As Boolean) As Double
Returns the mean value of the given curve
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcMultiplyByValue (CurveIndex As Int, Value As Double, ZoomedPartOnly As Boolean)
Multiplies the curve by the given value
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcMutiply2Curves (SourceIndex1 As Int, SourceIndex2 As Int, DestinationIndex As Int, ZoomedPartOnly As Boolean)
Multiplies two curves and copies the result in the destination curve
Curve(DestinationIndex) = Curve(SourceIndex1) * Curve(SourceIndex2)
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcSubtract2Curves (SourceIndex1 As Int, SourceIndex2 As Int, DestinationIndex As Int, ZoomedPartOnly As Boolean)
Substracts two curves and copies the result in the destination curve
Curve(DestinationIndex) = Curve(SourceIndex1)  Curve(SourceIndex2)
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CalcSum2Curves (SourceIndex1 As Int, SourceIndex2 As Int, DestinationIndex As Int, ZoomedPartOnly As Boolean)
Adds two curves and copies the result in the destination curve
Curve(DestinationIndex) = Curve(SourceIndex1) + Curve(SourceIndex2)
ZoomedPartOnly = True calculates only the zoomed part if the curve is zoomed  CopyCurve (SourceIndex As Int, DestinationIndex As Int)
Copies the curve with SourceIndex to the DestinationIndex curve.  DrawGraph
Draws a graph  GetScaleAuto (CurveIndex As Int) As ScaleValues
Gets the automatic scale for the given curve  GetScaleManu (CurveIndex As Int) As ScaleValues
Gets the manual scale for the given curve  NumberFormat3 (Number As Double, MaxDigits As Int) As String
Formats numbers with a fixed number of digits and scientific notation  RemoveCursor (Index As Int)
Removes one or both cursors.
Set 0 or 1 as cursor index to delete one cursor.
Set 2 to delete both cursors.
When you remove cursor(0) cursor(1) becomes cursor(0), it is removed from the list.
If there is only one Cursor, then any index value will remove the cursor.  SetCursor (XIndex As Int, CursorIndex As Int, Color As Int)
Sets one of the two cursors.
XIndex = sample index, in the curve array.
CursorIndex = 0 or 1, index of the cursor.  SetCurveName (CurveIndex As Int, Name As String, UpdateGraph As Boolean)
Sets the a new name for the curve with the given index
UpdateGraph = True redraws the graph  SetCurveUnit (CurveIndex As Int, Unit As String, UpdateGraph As Boolean)
Sets a new unit for the curve with the given index
UpdateGraph = True redraws the graph  SetSameScale (SameScaleCurveIndex As Int)
Sets the scale of curve SameScaleCurveIndex for all curves  SetScaleManu (CurveIndex As Int, MinVal As Double, MaxVal As Double)
Sets a manual scale for a given curve  SetZoomIndexes (BeginIndex As Int, EndIndex As Int)
Sets the begin and end indexes for zoom diaplay  SetZoomMode
Sets the zooming mode
The user selects with the curor the left limit and then the right limit
 AddCursor (Color As Int)
 Properties:
 AutomaticYScales
Gets or sets the automatic scales mode
True displays automatic Y sacales for all curves
False displays the manual scales  CurvesToDisplay
Gets or sets the curves to display  DisplayCurveIndex
Gets or sets the DisplayCurveIndex property
True displays the curve index before the curve name
Example: 3 : Speed  DisplayCurveUnit
Gets or sets the DisplayCurveUnit property
True displays the curve unit after the curve name
Example: Speed [m/s]  DrawCursorValues
gets or sets the DrawCursorValues property
Displays the values of the cuves at the cursor position  GraphColor
Gets or sets the graph background color  GraphHeight
Gets the GraphHeight property
The height of the Graph in pixels  GraphWidth
Gets the GraphWidth property
The width of the Graph in pixels  GraphWithMissingData
Gets or sets the GraphWithMissingDat property
Manages curves with missing data, it is necessary to enter the MissingDataValue in place.  GridColor
Gets or sets the graph grid color  GridFrameColor
Gets or sets the graph grid frame color  Height
Gets or sets the Height property  Left
Gets or sets the Left property  MissingDataValue
Gets or sets the MissingDataValue property
Used when GraphWithMissingData = True, the missing data must be replaced by this value  NbMaxCurves
Gets or sets the max number of curves  NbMaxSamples
Gets or sets the max number of samples  NbSamples
Gets or sets the current number of samples  NbXIntervals
Gets or sets the number of x axis intervals  NbYIntervals
Gets or sets the number of y axis intervals  OuterFrame
Gets or sets the graph outer frame property
True = draws an outer frame around the graph  OuterFrameColor
Gets or sets the graph outer frame color  ScaleXValues
Gets or sets the ScaleValues property
it is a string with the different scale values separated by an exclamation mark.
it must begin with 1! and end with !10
Example: the default property 1!2!2.5!5!10
These values can be selected in the Designer: 1!2!2.5!5!101!1.2!1.5!1.8!2!2.5!3!4!5!6!7!8!9!10  ScaleYValues
Gets or sets the ScaleValues property
used for automatic scales
it is a string with the different scale values separated by the exclamation mark.
it must begin with 1! and end with !10
Example: the default property 1!2!2.5!5!10
These values can be selected in the Designer: 1!2!2.5!5!101!1.2!1.5!1.8!2!2.5!3!4!5!6!7!8!9!10  Snapshot
Returns a B4XBitmap object of the graph (read only)  Title
Gets or sets the graph title  Top
Gets or sets the Top property  Width
Gets or sets the Width property  XAxisName
Gets or sets the x axis name  XAxisUnit
Gets or sets the x axis uni  XIndexBegin
Gets the XIndexBegin property
Index of the first visible item  XIndexEnd
Gets the XIndexBegin property
Index of the last visible item
 AutomaticYScales
 Functions:
Attachments

86.2 KB Views: 67

66.2 KB Views: 53

9.2 KB Views: 63

21.8 KB Views: 55
Last edited: